首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >getAttribute()返回对象NodeList?

getAttribute()返回对象NodeList?
EN

Stack Overflow用户
提问于 2015-08-26 02:24:50
回答 1查看 1.2K关注 0票数 2

因此,我要做的是根据HTML "id“属性的值显示一系列图像,这也是它们的图像文件的名称。我编写了一个Javascript代码,它将为本系列中的每个图像构建src url (忽略愚蠢的类名):

代码语言:javascript
复制
var idnum = document.querySelectorAll(".trollface")[0].getAttribute("id");

var tribe;
if (idnum < 116903 && idnum > 100000) {
    tribe = "Xana";
} else if (idnum < 213403 && idnum > 200000) {
    tribe = "Hemi";
} else {
    tribe ="Theri";
} 

var icon = document.getElementsByClassName("trollface");
for(var i = 0; i < icon.length; i++) {
    icon[i].src = "Dot_files/" + tribe + "/Icons/" + idnum + ".png";
}

这很好,但是正如您可以看到的,所有的图像都将具有与本系列中的第一个图像相同的src,这不是我想要的。

我遇到的主要问题是获取每个imgid属性的值,并将它们用于自己的img src url。

我试过迭代id

代码语言:javascript
复制
var idnum = document.querySelectorAll(".trollface");
for(var x = 0; x < idnum.length; x++) {
    idnum[x].getAttribute("id");
}

但在Chrome中,idnum的值是“object %20 NodeList”,我认为它是一个对象NodeList。这反过来导致一个ERR_FILE_NOT_FOUND (或类似的东西),因为输出url变成了Dot_files/Theri/Icons/[object%20NodeList].png,它并不存在。

通过这个,我尝试将NodeList转换为数组,但在Chrome中仍然得到了相同的结果。

所以我想问的是:当我用类getAttribute("id")迭代所有元素时,为什么trollface不能工作呢?如果我只使用上面第一个片段中所示的一行代码,它就能正常工作。还可以重复两次,就像我用idnum迭代一次,用icon迭代第二次一样。这跟我的问题有关系吗?

有解决办法吗?我已经干了几天了,不知道该怎么做。

感谢您的帮助,为您的长期工作感到抱歉。如果需要的话,我可以提供更多的细节/解释。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-26 02:53:00

不,没有。如果连接idnum变量而不是getAttribute方法的返回值,getAttribute将返回一个字符串而不是nodeList。您不存储getAttribute调用的返回值,您在哪里使用它们?idnum[x].getAttribute("id");本身实际上不会执行任何操作。这一行得到了值并将其丢弃。

而且,您似乎没有将if逻辑移到第二次迭代中。

代码语言:javascript
复制
var idnums = document.querySelectorAll(".trollface");

Array.prototype.forEach.call(idnums, function(el) {
    var tribe, id = el.id;
    if (id < 116903 && id > 100000) {
        tribe = "Xana";
    } else if (id < 213403 && id > 200000) {
        tribe = "Hemi";
    } else {
        tribe ="Theri";
    } 
    el.src = "Dot_files/" + tribe + "/Icons/" + id + ".png";
});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32217008

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档