【问题标题】:Method getElementById() returns null方法 getElementById() 返回 null
【发布时间】:2018-02-27 19:30:42
【问题描述】:

我通过以下方式设置 id 属性:

Element node = document.createElement("something");
node.setAttribute("id", "1");
node.setIdAttribute("id", true);

然后我检查这是否真的是 id 属性:

node.getAttributeNode("id").isId());

返回真

但是当我尝试通过它的 id 获取节点时

document.getElementById("1");

甚至

document.getElementById(node.getAttributeNode("id").getValue())

我得到空值

我做错了什么?

【问题讨论】:

  • 这看起来像是 Javascript,而不是 Java。此外,您正在执行document.getElementById("id") 应该在的位置:document.getElementById("1") 因为您将 ID 设置为 1。不过,作为关键点,我觉得将 ID 设置为字符串数字并不是最佳做法。它应该更容易理解/可读。
  • 对不起,那是我的错字,当然必须有“1”,已修复。
  • 那么,错误仍然存​​在吗?你能用你拥有的代码创建一个 JS Fiddle 以便我们调试它吗?

标签: java dom


【解决方案1】:

尽管您放置了错误的标签,但看起来您将元素的 ID 定义为“1”所以这意味着引用它,您也应该通过“1”引用它

document.getElementById("1");

将返回您标记中的 DOM 对象,只要它存在于标记中。根据框架的不同,它可能会从 Dom 中提取出来,但对于初学者编程来说并非总是如此。

请注意,ID 应该是唯一的,但同时最好将其命名为人类可读的名称。原因是你稍后会回到这段代码,完全不知道它做了什么。

如果您相应地命名事物,它会让您更轻松,还允许您创建和遵循一般编程的最佳实践。

【讨论】:

    【解决方案2】:

    除了前面的答案。 您的代码的问题是创建的节点

    var node = document.createElement("sector");
    node.setAttribute("id", "1");
    

    尚未在文档中。您必须添加它。 示例

    // Adding the node to the body.
    document.body.append(node)
    

    现在

    document.getElementById(1)
    

    【讨论】:

    • 这是 Java,不是 JS。我尝试使用 document.appendChild(node);但出现异常:org.w3c.dom.DOMException: HIERARCHY_REQUEST_ERR: 尝试插入不允许的节点。
    • 您必须将节点附加到“body”、“head”或先前存在的元素中
    • @KonstantinM - 试试document.getDocumentElement().appendChild(node);
    猜你喜欢
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 2011-07-13
    • 1970-01-01
    • 2014-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多