2010-12-20 134 views
9

我有一個腳本來打開一個模型窗口..鉻給我「未捕獲的SyntaxError:意外的令牌}」,甚至沒有一個結束大括號。意外的令牌}

這裏是有錯誤的腳本部分:

function showm(id1){ 
    window.onscroll=function(){document.getElementById(id1).style.top=document.body.scrollTop;}; 
    document.getElementById(id1).style.display="block"; 
    document.getElementById(id1).style.top=document.body.scrollTop; 
} 

是否有人對此有什麼想法?任何幫助表示讚賞。

+4

我看不出有什麼問題(除了你試圖將整數分配給需要長度的CSS屬性)。我猜錯誤是在一些周圍的代碼。 – Quentin 2010-12-20 16:21:06

+1

您發佈的代碼不會導致語法錯誤。這真的是你的劇本的所有**嗎?代碼中沒有任何東西看起來與打開窗口有關。 – Pointy 2010-12-20 16:23:12

+0

它並不真正打開一個窗口,它只是使一個div,模態「窗口」,可見。不,不是全部。但其餘的代碼不在問題出在哪裏。再加上它就像100行。你想讓我發佈嗎? – 2010-12-20 16:26:47

回答

19

嘗試運行整個腳本通過jslint。這可能會幫助您指出錯誤的原因。

編輯好吧,這不是腳本語法的問題。至少不是jslint可以檢測到的方式。

打過你活在代碼http://ft2.hostei.com/ft.v1/,它看起來像有在你的腳本付諸DOM中onclick屬性生成的代碼語法錯誤。大多數瀏覽器在通過這些事情運行JavaScript中報告錯誤方面做得並不出色(動態插入元素的onclick屬性中的一段腳本的文件和行號是什麼?)。這可能是您在Chrome中遇到混淆錯誤消息的原因。雖然FireBug確實顯示導致問題的代碼,但FireFox錯誤消息不同,也沒有有用的行號。

var sub = document.getElementById('submit'); 
... 
sub.setAttribute("onclick", "save(\""+file+"\", document.getElementById('name').value, document.getElementById('text').value"); 

注意,這個設置元素的onclick屬性無效 JavaScript代碼:

的這段代碼是從您edit功能,在你的HTML內嵌腳本塊採取

<input type="submit" id="submit" onclick="save("data/wasup.htm", document.getElementById('name').value, document.getElementById('text').value"> 

的JS是:

save("data/wasup.htm", document.getElementById('name').value, document.getElementById('text').value 

請注意失蹤的親友以完成save的呼叫。

另外,插入onclick屬性並不是一種非常現代或乾淨的在JavaScript中添加事件處理程序的方式。爲什麼不使用DOM的addEventListener來簡單地將一個函數連接到元素?如果你使用的是類似jQuery的東西,這將會更簡單。

+0

謝謝!這個錯誤浪費了我很多時間!再次感謝! – 2010-12-21 16:57:27

+0

@ tann98不客氣。開始使用'addEventListener'來代替JavaScript文件中定義的函數,並且從現在開始你會得到適當的語法錯誤的行號 - 這樣可以節省你在這個問題上的時間:)最好避免使用'eval'出於同樣的原因。祝你好運 – Day 2010-12-21 17:01:04

+0

我會記住我所有的javascript來。繼承人結果:http://ft.comli.com/ft.v1(不同的網站,因爲其他人不會加載) – 2010-12-21 17:26:12

2

你有地方死循環:

function save() { 
    var filename = id('filename').value; 
    var name = id('name').value; 
    var text = id('text').value; 
    save(filename, name, text); 
} 

不知道你在想什麼與無限循環來完成,但首先是擺脫一下,看看是否一切正常。

+0

你確定嗎?我無法找到...我認爲這個功能自那以後就改變了。它不應該調用save(),而是save_f() – 2010-12-21 16:11:17

+0

該函數已從那一點改變。 – 2010-12-21 16:53:27