0


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

代码很简单:

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

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

4

3 回答 3

2

如果您调用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;
}
于 2013-02-21T22:28:02.123 回答
1

你可以试试这个:

var p4 = document.getElementById("page4");
if (p4) p4.href = "page4.php?pos="+scrollPos;
于 2013-02-21T22:31:24.767 回答
0

我仍在为此苦苦挣扎,我认为 Mark Reed 和 Maël Nison 解决了这个问题,但我仍然无法弄清楚为什么会这样。

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

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

再次感谢你的帮助!!

于 2013-02-22T21:57:40.097 回答