gpt4 book ai didi

javascript - 如何获取 javascript 中注释元素的句柄?

转载 作者:行者123 更新时间:2023-11-30 10:48:55 24 4
gpt4 key购买 nike

我在工作中从事一个副项目,这需要我编写一些 javascript 代码。不幸的是,我是 javascript 世界的新手,并且正在学习。

所以我要做的部分工作需要我在页面上找到某些评论,我使用以下行首先获取所有评论:

var arr = document.getElementsByTagName("!");

这在 IE8 中完美运行,并返回页面上所有评论的数组。但是,这会在 Google Chrome 中返回一个空数组,当我打开开发人员控制台时,我可以看到一个未捕获的 TypeError(可能是由于对空数组执行的操作)。

知道为什么这在两种浏览器上都不起作用吗?这是我不应该使用的某种不受支持的操作,还是我只是误用了它?

非常感谢任何帮助或指向某个方向的指示!谢谢!

澄清:我这样做是为了操纵共享点页面。这个脚本的实际意图是隐藏输入元素所在的表行。为此,我需要先找到该元素,但我不能这样做,因为它的属性基本上是乱码:

<input name="ctl00$m$g_edc51673_bad2_46d5_9a65_e71137e56558$ctl00$ctl04$ctl00$ctl00$ctl‌​00$ctl04$ctl00$ctl00$TextField"
type="text" value="Title" maxlength="255"
id="ctl00_m_g_edc51673_bad2_46d5_9a65_e71137e56558_ctl00_ctl04_ctl00_ctl00_ctl00_‌​ctl04_ctl00_ctl00_TextField"
title="Title" class="ms-long">

(我在某些地方换行以使其更易于阅读,但这些都是在源代码中的一行中(没有什么区别))

所以无论如何,我不能真正使用它来找到我正在寻找的控件。你可能会说它具有某种结构,其中输入的类型始终位于垃圾的末尾,还有标题属性等等。但事实并非如此。诚挚的,Microsoft,对某些控件执行此操作,但不对其他控件执行此操作。

但是!它们与在其中包含元素名称的乱码垃圾之前提供注释完全一致,如果我可以捕获该注释,我可以将 foo.parenNode 移至我想要的内容。

最佳答案

您可以从节点 document 开始遍历 DOM 并迭代每个节点的 childNodes 数组。当您找到一个节点时,您可以测试 nodeType==8

这里是链接

childNodes

nodeType

document.createTextNode

还有一个小例子

<html>
<head>
</head>
<body>
<ul>
<li>junk
<li>text
<!-- comment 1 -->
<li>hi
<li>hello
<li>world
</ul>
<br/>
<!-- comment 2 -->
<script>
window.onload=findcommentsstart
var msgs = [];
function findcommentsstart()
{
findcomments(document);
var txt = document.createTextNode(msgs.join("\n"));
document.getElementsByTagName("body")[0].appendChild(txt);
}

function findcomments(d)
{
if(!d)
return;
if(d.nodeType==8)
msgs.push("found a comment node " + d.data);
if(!d.childNodes)
return;
for(var i=0;i<d.childNodes.length;i++)
findcomments(d.childNodes[i]);
}
</script>
</body>
</html>

关于javascript - 如何获取 javascript 中注释元素的句柄?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6666083/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com