Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何有效地使用getElementsByTagName_Javascript_Html - Fatal编程技术网

Javascript 如何有效地使用getElementsByTagName

Javascript 如何有效地使用getElementsByTagName,javascript,html,Javascript,Html,我目前正在使用此bookmarklet隐藏网页中的多个随机行: (function () { document.getElementsByTagName("tr")[1].style.display = "none"; document.getElementsByTagName("tr")[3].style.display = "none"; document.getElementsByTagName("tr")[6].style.display = "none"; })

我目前正在使用此bookmarklet隐藏网页中的多个随机行:

(function () {
    document.getElementsByTagName("tr")[1].style.display = "none";
    document.getElementsByTagName("tr")[3].style.display = "none";
    document.getElementsByTagName("tr")[6].style.display = "none";
})();
有必要重复吗

document.getElementsByTagName("tr")[].style.display = "none"
一次又一次,还是有什么方法可以简化它?
我的意思是将所有这些合并到一个简单的命令中,如

document.getElementsByTagName("tr")[1,3,6].style.display = "none".
可能吗


请为我提供上述bookmarklet的编码示例?

使用for循环或foreach循环

var temp = document.getElementsByTagName("tr");
for(var i = 0; i < temp.length; i++){
    temp[i].style.display = "none";
}
可以放入

document.getElementsByTagName("tr").forEach(element => element.style.display = "none");

当然,您可以将
tr
s存储在变量中:

var trs = document.getElementsByTagName("tr");
然后您可以在
tr
s1到3之间循环

for(var i = 1; i <= 3; i++) {
  trs[i].style.display = "none";
}
试试这个

var rows= document.getElementsByTagName("tr")
Array.from(rows).forEach(v => v.style.display = 'none');

如何使用jquery?将其放入变量中,然后对其进行迭代。您可以将返回的值保存在变量中,然后使用该变量,而不是反复调用函数。几乎可以肯定,有一种更好的方法可以完成您尝试执行的任何操作,很可能是以CSS为中心的方法。你的目标是什么?是否要隐藏某个表的前三行?这不是您的问题。您希望对每个元素执行一件事而不重复。表行没有原型方法
doSomething()
。你的代码只会抛出一个错误,现在你的答案是疯狂的错误。foreach=foreach,htmlCollection没有这个原型,真的吗?你必须自己去填。类似于
row.style.display=“none”
您的答案完全错误。是的,您应该更改它,您是否尝试运行此代码?除非发生更改,否则您不能直接切片
trs
。您需要借用
Array.prototype.slice
…但是,现代实现似乎直接添加了
.forEach()
,因此您可以比较回调中的索引作为替代。从技术上讲,这是对这个问题的一个很好的回答,但是几乎从来没有必要像这样循环某些东西并明确地设置样式。CSS可以处理几乎所有这样的情况,如果OP告诉我们他的实际问题是什么,我们可以告诉他如何处理。
Array.prototype.slice.call(trs, 1, 4).forEach(function(tr) {
  tr.style.display = "none";
});
var rows= document.getElementsByTagName("tr")
Array.from(rows).forEach(v => v.style.display = 'none');