为什么javascript即使在HTML文档中也找不到具有特定ID的元素?

为什么javascript即使在HTML文档中也找不到具有特定ID的元素?,javascript,html,Javascript,Html,我有一个ID为0-0的HTML DIV。我有javascript试图调用该ID。但它给出了一个错误:TypeError:无法将属性“innerHTML”设置为null。我不知道如何调试它,因为Javascript基本上没有按照我预期的方式运行 function getSurroundingIDs(id){ var onesPlace = parseInt(id.split("-", 2)[0]); var tensPlace = parseInt(id.spl

我有一个ID为0-0的HTML DIV。我有javascript试图调用该ID。但它给出了一个错误:TypeError:无法将属性“innerHTML”设置为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返回null呢

有几个问题:

如果你没有使用HTML5,你的ID是无效的。它必须以英文字母开头。这可能会导致getElementByID无法正常工作。。 div之前的分号和javascript代码是什么 属性?您可能有其他一些javascript会把您的 HTML代码。。 从:

ID和名称标记必须以字母[a-Za-z]开头,并且可以是 后跟任意数量的字母、数字[0-9],连字符-, 下划线、冒号和句点

例如,可以使用id=div-0-0


请注意,正如@CrazyTrain在评论中所述,HTML5不存在此限制,大多数浏览器都会以任何方式获取数字ID。

我最感兴趣的是标记中的分号和“return false”。如果可能的话,我会稍微清理一下html。

HTML5不存在这种限制,我认为浏览器通常会以任何方式获取数字ID。@CrazyTrain你是对的,但是OP没有说他使用的是哪个html版本和哪个浏览器,代码似乎相对不错,所以我认为这就是问题所在。无论哪种方式,它都会在Chrome中工作。这是一个使用XHTML strict doctype的演示,分号在html中的作用是什么?为什么标记中有一堆无效文本?难道你不能给出一个完整的代码示例来重现这个问题,而不是这些部分代码片段和屏幕截图吗?@CrazyTrain我从html中删除了分号,并更改了ID一封信,但我仍然有问题。我现在已经发布了完整的代码。document.getElementByIdi+-+j应该是document.getElementByIdc+I+-+j,在setNumbers函数的两个点中。或者使用您的id变量。变量id=c+i+-+j;