奇怪的是代码工作,在某一行以下什么都不会起作用,甚至不是警报,变量也会失去价值!
代码非常简单:
// 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 :(得分:2)
如果您致电document.getElementById("something")
,并且网页上没有ID为"something"
的元素,则Javascript将返回null
。如果您然后尝试访问href
的{{1}}属性,Javascript会抛出异常并停止所有处理。
您可以在浏览器中打开Javascript控制台,查看错误消息,例如null
。
你可以做这样的事情来避免这个错误并且不得不硬编码一般的页数:
TypeError: Cannot set property 'href' of null
答案 1 :(得分:1)
var p4 = document.getElementById("page4");
if (p4) p4.href = "page4.php?pos="+scrollPos;
答案 2 :(得分:0)
我仍然在努力解决这个问题,我认为Mark Reed和MaëlNison已经解决了这个问题,但我仍然无法弄清楚为什么会这样。
基本上我在网站上有2个按钮,包括带有下拉面板的子菜单链接(我在下拉列表中使用“anylinkmenu”),我不得不在anylinkmenu.js中添加一些代码来添加“ id“to every”a href“element,no biggie。
只有第一个下拉列表会将“id”识别为我的“js”代码,第二个下拉列表对甜甜圈不起作用!
再次感谢您的帮助!!