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 に答える