访问<;span>;Javascript中的节点
我正在尝试编写一个只显示带有标签的照片的greasemonkey脚本 它运行的站点是这样写的:访问<;span>;Javascript中的节点,javascript,dom,greasemonkey,Javascript,Dom,Greasemonkey,我正在尝试编写一个只显示带有标签的照片的greasemonkey脚本 它运行的站点是这样写的: <div class="photos"> <ul> ... <li> <a href="photo1"> <img src="http://somesite.co/photo1.jpg" </a> <br /> <a href="tags_photo1"> <span class="tags">&am
<div class="photos">
<ul>
...
<li>
<a href="photo1"> <img src="http://somesite.co/photo1.jpg" </a> <br /> <a href="tags_photo1"> <span class="tags"> bacon, delicious </span> </a>
</li>
...
</ul>
</div>
它返回一个XPCNativeWrapper集合,其中所有元素都未定义
关于如何获取标签有什么想法吗?我对javascript相当陌生,所以如果我的问题很愚蠢,我很抱歉
[编辑]
var spans, tags;
spans = document.getElementsByTagName('span');
for (var i = spans.length - 1; i >= 0; --i)
{
tags = spans[i];
alert(tags.wrappedJSObject.nodeValue);
}
返回为null,即使使用wrappedJSObject也是如此。是因为Object.prototype不适用于XPCNativeWrapper吗?还是我遗漏了什么?使用纯Javascript(而不是使用像jQuery这样的库——我认为在greasemonkey脚本中不能使用jQuery),这应该可以工作:
var spans = document.getElementsByTagName("span");
for(var i = spans.length - 1; i >= 0; i--) {
if(spans[i].className == "tags") {
var span = spans[i];
// do something to span
}
}
如果可以的话,您可能希望研究使用jQuery,因为jQuery中的代码是:
$("span.tags").each(function() {
var span = this;
// do something to span
});
[编辑]
var spans, tags;
spans = document.getElementsByTagName('span');
for (var i = spans.length - 1; i >= 0; --i)
{
tags = spans[i];
alert(tags.wrappedJSObject.nodeValue);
}
您可能会遇到问题,因为您的img标签未关闭
一旦您访问了带有标记的span,您只需要获取它的innerHTML
属性
如果tags元素不包含“bacon”,则此代码将删除整个列表项:
2件事:for(int i=0;i
Array.forEach(span,函数(span){});
如果不使用JQuery。
var spans = document.getElementsByTagName("span");
for(var i = spans.length - 1; i >= 0; i--) {
if(spans[i].className == "tags") {
var span = spans[i];
if (!span.innerHTML.match(/bacon/i)) {
var li = span.parentElement.parentElement;
li.style.display = "none";
}
}
}