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

时间:2013-08-25 16:41:04

标签: javascript html

我有一个ID =“0-0”的HTML DIV。我有javascript尝试调用该ID。但它给出了一个错误: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?

2 个答案:

答案 0 :(得分:3)

有几个问题:

  1. 如果您没有使用HTML5,则您的ID无效。它必须以英文字母开头。这可能会导致getElementByID()无法正常工作..
  2. div之前的这些分号和javascript代码是什么? 属性?你可能有一些其他的javascript搞砸了你的 HTML code ..
  3. 来自HTML 4 specification

      

    ID和NAME令牌必须以字母([A-Za-z])开头,可能是   后跟任意数量的字母,数字([0-9]),连字符(“ - ”),   下划线(“_”),冒号(“:”)和句点(“。”)。

    您可以使用例如id="div-0-0"

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

答案 1 :(得分:0)

标签中的分号和'return false'对我来说很突出。如果可能的话,我会稍微清理一下html。