繁体   English   中英

javascript仅在代码中的特定行下方停止工作

[英]javascript stops working only below a certain line in the code


奇怪的是,代码可以正常工作,并且在特定的行以下没有任何工作,甚至没有警报,并且变量失去了价值!

代码很简单:

// 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! :(

实际上,故障点之后没有任何作用,甚至没有警报(“测试”)!

如果调用document.getElementById("something") ,并且页面上没有ID为"something"元素,则Javascript将返回null 如果然后尝试访问href属性null ,则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;
}

您可以尝试以下方法:

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

我仍在为此苦苦挣扎,我认为马克·里德(Mark Reed)和玛尔·尼森(MaëlNison)提出了问题,但我仍然不知道为什么会这样。

基本上我在网站上有2个按钮,其中包括带有下拉面板的子菜单链接(我在下拉菜单中使用“ anylinkmenu”),我必须在anylinkmenu.js内添加一些代码以向其中添加“ id”每个“ a href”元素,都不算大事。

只有第一个下拉菜单的“ js”代码可以识别“ id”,第二个下拉菜单不适用于甜甜圈!

再次感谢你的帮助!!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM