-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 代码是什么?你可能有一些其他的 javascript 会弄乱你的 HTML 代码。

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 回答