【发布时间】:2020-03-16 06:24:44
【问题描述】:
我有一个包含 UL 列表项的现有 NAV 标签。当 NAV 标签内容保持原样时,原始 HTML 工作。当我用我自己的 HTML 替换 INNERHTML 时,它类似于原始 HTML AS-IS,逐字逐句地,NAV 将不再像原始 HTML 那样下降。我检查了每一个字母和单词。我确实注意到其中一个 ANCHOR HREF 确实包含 #。这是原始资产净值中的内容。
<nav id="nav">
<ul>
<li class="current"><a href="index.html">Welcome</a></li>
<li class="submenu">
<a href="#">Show Me</a>
<ul>
<li><a href="hybrid/index.html">The Hybrid</a></li>
</ul>
</li>
</ul>
</nav>
我的代码就是这样显示的
var pstrHTML = "<ul>"
+ "<li class='current'><a href='index.html'>Welcome</a></li>"
+ "<li class='submenu'>"
+ "<a href='#'>Show Me</a>"
+ "<ul>"
+ "<li><a href='hybrid/index.html'>The Hybrid</a></li>"
+ "</ul>"
+ "</li>"
+ "</ul>";
document.getElementById("nav").innerHTML = pstrHTML;
如果我在 SHOW ME 列表项上粘贴一个包含 WINDOW.ALERT 的 ONCLICK,它会在单击时生成一个 ALERT。所以我知道 INNERHTML 是通过 ONPAGELOAD 工作的。但无论出于何种原因,NAV 都无法匹配原始 HTML。
【问题讨论】:
-
您已将事件侦听器附加到原始元素,
innerHTML创建新元素以显示。尽管这些新元素看起来相同,但它们与附加事件的原始元素不同。如果您无法使用append/appendChild/insertBefore/insertAdjacentElement/insertAdjacentHTML方法操作内容,那么您必须将事件委托给祖先元素(在nav上)。
标签: javascript css innerhtml nav