gpt4 book ai didi

javascript - 通过 TagName 获取属性 - JS

转载 作者:行者123 更新时间:2023-12-02 16:06:08 24 4
gpt4 key购买 nike

我的具体情况是,我试图从 DOM 中删除/使链接元素处于非事件状态(我无法控制它的生成)。我计划执行此操作的方法是用无意义的值替换 'href' 属性 - 我选择这样做而不是简单地使用 disable = true 的原因是这样函数可以在其他场合重用以更改其他属性。

我遇到的问题是 .getAttribute 它返回错误“TypeError:elemArr.hasAttribute 不是函数”。

function removeLink(elem, att, value, replacement) {
var elemArr = document.getElementsByTagName(elem);
for (var i = 0; i < elemArr.length; i++) {
var workingAtt = elemArr.hasAttribute(att);
if (workingAtt.value === filePath) {
elemArr[i].setAttribute(att, replacement);
}
}
}
removeLink("link", "href", "filePath", "#");

非常感谢任何有关抛出此错误的原因的帮助。

最佳答案

其中发生的事情是 elemArr 是一个数组,而数组没有 hasAttribute 方法。将您的代码重写为

function removeLink(elem, att, value, replacement) {
var elemArr = document.getElementsByTagName(elem);
for (var i = 0; i < elemArr.length; i++) {
//this line here wasn't referring to a specific node but the array
var workingAtt = elemArr[i].hasAttribute(att);
if (workingAtt && elemArr[i].getAttribute(att) === value) {
elemArr[i].setAttribute(att, replacement);
}
}
}
removeLink("link", "href", "filePath", "#");

它会起作用的。

更简洁的方法是这样的:

function removeLink(elem, att, value, replacement){
var selector = elem + '['+ att +'="'+ value +'"]';
[].forEach.call(document.querySelectorAll(selector), function(node){
node.setAttribute(att, replacement);
});
}

它的作用基本相同,但更短、更明确。

关于javascript - 通过 TagName 获取属性 - JS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30713903/

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