2013-02-21 37 views
0


奇怪的是代碼工作,並且在某一行下面什麼都不會工作,甚至沒有警報,變量也失去了值!javascript停止工作只能在代碼中的某一行下方

的代碼非常簡單:

// retrieving scroll position from a hidden text input<br> 
var scrollPos = document.getElementById("scrollPosition").value; 

// at this point scrollPos value is a certain number :) 

// so i'm successfully able to change the HREF accordingly! :)<br> 
document.getElementById("page1").href = "page1.php?pos="+scrollPos;<br> 
document.getElementById("page2").href = "page2.php?pos="+scrollPos;<br> 
document.getElementById("page3").href = "page3.php?pos="+scrollPos; // same value to all! 

document.getElementById("page4").href = "page4.php?pos="+scrollPos;<br> 
// at some weird point scrollPos loses its value! :(

其實,沒有什麼毛刺點的作品,甚至不是一個警報(「測試」)後!

+0

嗨米莫,你有這個工作嗎? – Sergio 2013-08-05 07:06:37

回答

2

如果您致電document.getElementById("something"),並且頁面上沒有編號爲"something"的元素,那麼Javascript將返回null。如果您嘗試訪問nullhref屬性,則JavaScript將引發異常並暫停所有處理。

您可以在瀏覽器中打開Javascript控制檯查看錯誤消息,如TypeError: Cannot set property 'href' of null

你可以做這樣的事情,以避免雙方的錯誤,並且具有硬編碼的頁面一般數量:

var page, elem; 
for (page = 1; elem = document.getElement("page"+page); ++page) { 
    elem.href = "page" + page + ".php?pos=" + scrollPos; 
} 
+0

這是錯誤的,瀏覽器將返回'null'。然後它會嘗試訪問'nul​​l'的'href'屬性,這會導致它崩潰。 – 2013-02-21 22:35:28

+0

對,@MaëlNison。糾正。 – 2013-02-21 22:36:08

+0

感謝您的回答! 一旦頁面加載(與鉻)我右鍵單擊元素,然後單擊「檢查元素」,他們都有他們的「ID」設置正確! :( – mimmo 2013-02-21 22:45:24

1

你可以試試這個:

var p4 = document.getElementById("page4"); 
if (p4) p4.href = "page4.php?pos="+scrollPos; 
+0

謝謝,但我認爲它仍然無法正常工作,我有一個問題時執行JavaScript:在螢火蟲我得到的消息:TypeError:document.getElementById(...)爲空 – mimmo 2013-02-21 23:38:37

0

我仍然在爲此苦苦掙扎,我認爲Mark Reed和MaëlNison已經解決了這個問題,但我仍然無法弄清楚爲什麼會發生這種情況。

基本上,我有2個按鈕,其中包括下拉麪板(我使用「anylinkmenu」爲下拉菜單)的子菜單鏈接,我不得不在anylinkmenu.js添加一些代碼添加「id」給每一個「a href」元素,沒有什麼大不了的。

只有第一個下拉菜單中的「id」會被我的「js」代碼識別,第二個下拉菜單對於甜甜圈不起作用!

再次感謝您的幫助!