Javascript element.setAttribute不是函数

Javascript element.setAttribute不是函数,javascript,object,setattribute,Javascript,Object,Setattribute,所以,我知道这已经得到了回答,但之前的回答都没有一个能够使我的代码正常工作。我的html结构如下所示: <div class="form"> <div class="formrow"> <div class="previewcontainer"> <object id="preview"> <object> </div> <

所以,我知道这已经得到了回答,但之前的回答都没有一个能够使我的代码正常工作。我的html结构如下所示:

<div class="form">
    <div class="formrow">
        <div class="previewcontainer">
            <object id="preview">
            <object>
        </div>
    </div>
</div>
但是,我得到一个错误
preview.setAttribute不是一个函数

请尝试以下操作:

var link = "http://www.someurl.com";
var preview = document.querySelectorAll ("#preview");
preview[0].setAttribute("data", link);
或者这个:

var link = "http://www.someurl.com";
var preview = document.getElementById("preview"); //getElementById instead of querySelectorAll
preview.setAttribute("data", link);
确保在创建元素后运行代码,或使用jQuery代码:

$( document ).ready(function() {
}
“未捕获的TypeError:无法读取null的属性'setAttribute'”


By:LazarusRising在这种情况下,元素在文档中还不存在。您需要在创建元素后运行代码,例如在加载事件后或元素下的脚本后。

使用querySelectorAll()时,将其视为数组,您需要一个“for循环”来逐步遍历不同的元素。 例如

var-link=”http://www.someurl.com";
var preview=document.queryselectoral(“预览”);
对于(变量i=0;i
现在,这将把id为“preview”的所有元素的“type attributes”更改为链接。

如果您使用“querySelectorAll”,Viktor Akanam的答案将帮助您,
或者你可以直接使用“querySelector”而不是“querySelectorAll”!

preview
是一个节点列表
var preview=document.querySelector(“#preview”);
或者
var preview=document.getElementById(“preview”);
这样做我得到“无法读取未定义”的属性“setAttribute”“未捕获的TypeError:无法读取null的属性'setAttribute'"@LazarusRising在这种情况下,元素在文档中还不存在。您需要在创建元素后运行代码,比如在加载事件或元素下的脚本之后。事实上,这确实是个问题,但我取消了它的资格,因为我只是将函数的内容写入了一个我没有完全访问权限的代码。Woul你介意编辑你的答案以便它被接受吗?我试图选择一个不存在的元素。给出了相同的错误。Doh!这个答案给了我一个指向正确方向的指针。我想我很清楚“确保在创建元素后运行代码”,但我想不是。。。
$( document ).ready(function() {
}
var link = "http://www.someurl.com";
var preview = document.querySelectorAll ("#preview");
for (var i = 0; i < preview.length;  i++ {
preview[i].setAttribute("type", 'href');
}