所以,我知道这已经得到了回答,但之前的答案都没有设法使我的代码工作。我有一个html结构如下:
<div class="form">
<div class="formrow">
<div class="previewcontainer">
<object id="preview">
<object>
</div>
</div>
</div>
我正在尝试将data属性设置为这样的对象:
var link = "http://www.someurl.com";
var preview = document.querySelectorAll ("#preview");
preview.setAttribute("data", link);
但是,我收到错误preview.setAttribute is not a function
答案 0 :(得分:3)
或者这个:
var link = "http://www.someurl.com";
var preview = document.getElementById("preview"); //getElementById instead of querySelectorAll
preview.setAttribute("data", link);
确保在创建元素后运行代码,或使用jQuery代码:
$( document ).ready(function() {
}
“未捕获的TypeError:无法读取属性'setAttribute'的null”
By:LazarusRising-在这种情况下,该元素在文档中尚不存在。您需要在创建元素后运行代码,例如在load事件之后或元素下面的脚本。
答案 1 :(得分:1)
在使用querySelectorAll()时,将其视为一个数组,您需要一个“ for循环”来逐步遍历不同的元素。 例如。
var link = "http://www.someurl.com";
var preview = document.querySelectorAll ("#preview");
for (var i = 0; i < preview.length; i++ {
preview[i].setAttribute("type", 'href');
}
现在,这会将ID为“ preview”的所有元素的“类型属性”更改为链接。
答案 2 :(得分:1)
如果您使用能够一次选择多个元素的任何选择器(例如 getElementsByClassName 、 querySelectorAll )分配变量,则它会显示错误,因此请使用一次选择单个元素的任何选择器(例如:getElementById)< /p>
答案 3 :(得分:0)
试试这个:
var link = "http://www.someurl.com";
var preview = document.querySelectorAll ("#preview");
preview[0].setAttribute("data", link);
答案 4 :(得分:0)
如果您应使用“ querySelectorAll”,Viktor Akanam的答案将为您提供帮助, 或者您可以起诉“ querySelector”而不是“ querySelectorAll”!