【问题标题】:Why does this not show the message "Hello world!"?为什么这不显示消息“Hello world!”?
【发布时间】:2013-04-02 10:21:30
【问题描述】:
var div = document.createElement("tempdiv");
div.innerHTML = "<html><body><div id='test'>Hello World!</div></body></html>";
alert(div.getElementById("test").innerHTML);

我收到错误“Uncaught TypeError: Object #HTMLUnknownElement has no method 'getElementById'

【问题讨论】:

  • @DavidNorgren - 网上有很好的 JS 和 DOM 资源。我建议你阅读其中的几个,上面的内容自然会落到实处。

标签: javascript document getelementbyid createelement


【解决方案1】:

getElementById 方法只存在于文档对象上。单个 DOM 元素不支持它。如果要将元素添加到 DOM,可以调用 document.getElementById("test").innerHTML; 来获取文本。

【讨论】:

    【解决方案2】:

    getElementById 不会搜索不在文档中的元素。在创建元素并为其分配 ID 时,您必须先使用 insertBefore 或类似方法将元素插入到文档树中,然后才能使用 getElementById 访问它。

    参考:https://developer.mozilla.org/en-US/docs/DOM/document.getElementById

    例子:

    var div = document.createElement("div");
    document.body.appendChild(div);
    div.innerHTML = "<div id='test'>Hello World!</div>";
    console.log(document.getElementById("test"));
    

    【讨论】:

      【解决方案3】:

      不要忘记在创建的 div 中设置一个 ID 以便能够选择:

      var div = document.createElement("div");
      div.setAttribute('id', 'idName');
      div.innerHTML = "<html><body><div id='test'>Hello World!</div></body></html>";
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-09-12
        • 1970-01-01
        • 1970-01-01
        • 2017-09-04
        • 1970-01-01
        • 2015-12-04
        • 1970-01-01
        相关资源
        最近更新 更多