-1

ID="0-0" の HTML DIV があります。そのIDを呼び出そうとするjavascriptがあります。しかし、エラーが発生しています: TypeError: Cannot set property 'innerHTML' of null。Javascript は基本的に期待どおりに動作しないため、これをデバッグする方法がわかりません。

function getSurroundingIDs(id){
         var onesPlace = parseInt(id.split("-", 2)[0]);
         var tensPlace = parseInt(id.split("-", 2)[1]);  //split on -, return 2 tokens
         var IDs = new Array();
         for (var row=onesPlace-1;row<=onesPlace+1;row++){
             for (var col=tensPlace-1;col<=tensPlace+1;col++){
                 if(document.getElementById(row + "-" + col)){IDs[IDs.length]=row+"-"+col;}
            }
         }
     return IDs;
}

では、なぜgetElementByID(id)null を返すのでしょうか?

4

2 に答える 2

3

いくつかの問題:

  1. HTML5 を使用していない場合、ID は無効です。英字で始まる必要があります。getElementByID()正しく動作しない原因となる可能性があります..
  2. div の属性の前にあるこれらのセミコロンと JavaScript コードは何ですか? HTMLコードを台無しにする他のjavascriptがあるかもしれません..

HTML 4仕様から:

ID および NAME トークンは文字 ([A-Za-z]) で始まり、その後に任意の数の文字、数字 ([0-9])、ハイフン ("-")、アンダースコア ("_") が続く場合があります、コロン (":")、およびピリオド (".")。

たとえば、 を使用できますid="div-0-0"

(コメントで @CrazyTrain が述べているように) この制限は HTML5 には存在せず、ほとんどのブラウザはどちらの方法でも数値 ID をフェッチすることに注意してください。

于 2013-08-25T16:41:58.607 に答える
0

私が際立っているのは、タグのセミコロンと「return false」です。可能であれば、HTMLを少しきれいにしたいと思います。

于 2013-08-25T16:48:55.713 に答える