element.setAttribute不是函数

时间:2016-02-25 11:58:48

标签: javascript object setattribute

所以,我知道这已经得到了回答,但之前的答案都没有设法使我的代码工作。我有一个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

5 个答案:

答案 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”!