我在我的网站上实施了一个图片切换。它工作正常但我通过改变我的愿望打破了它。代码如下:
if (src) { $$('#' + id + ' a.product-image img').first().setAttribute("src", src);}
我已将其更改为:
if (src) { $$('#' + id + ' a.product-image img').first().setAttribute("src", src);
$$('#' + id + ' a.popup-image img').first().setAttribute("src", src);
}
我只是添加了一个需要更改的图像源。但是当我在我的网站上运行它时,我收到以下错误:
Uncaught TypeError: Cannot read property 'setAttribute' of undefined
我已经检查了该元素是否存在,以及是否可以通过将以下代码添加到我的脚本中找到它:
if('#' + id + 'popup-image' == 0){
console.log("fail");
}else{
console.log("found");
}
每次都会找到它。我已将代码更改为:
$$('#' + id + ' a.popup-image img').first().setAttribute("src", src);
但后来我收到以下错误:
Uncaught TypeError: Cannot read property 'first' of null
我该如何解决这个问题?
答案 0 :(得分:3)
如果要使用JavaScript setAttribute()
函数,则必须通过引用其数组的第一项[0]
来访问jQuery对象中的HTMLElement,如下所示:
$('#' + id + ' a.product-image img')[0].setAttribute("src", src);
调用first()
将返回一个jQuery对象;使用此方法,您必须使用 attr()
,因为jQuery中没有setAttribute()
方法。
尝试:
$('#' + id + ' a.product-image img').eq(0).attr("src", src);
或:
$('#' + id + ' a.product-image img:first').attr("src", src);
或者您可以使用带有索引参数的get(),并且传递0将返回第一个元素:
$('#' + id + ' a.product-image img').get(0).attr("src", src);
答案 1 :(得分:1)
要检查元素是否存在,您应该使用代码:
if($$('#' + id + 'popup-image').length > 0){
console.log("found");
}else{
console.log("fail");
}
设置属性
if (src) { $$('#' + id + ' a.product-image img').first().attr("src", src);
$$('#' + id + ' a.popup-image img').first().attr("src", src);
}