我有一个问题,我在jquery中获取窗口大小然后循环througbh三个img元素,以便在运行时将宽度应用于内联样式。
问题是当运行foreach循环时,我在控制台中收到此错误 未捕获的TypeError:Object [object Object]没有方法'setAttribute'
我在循环中放了一个断点,并将setAttribute应用于 this ,它似乎工作正常。我不明白为什么当它循环遍历数组时,它不会将每个数组项视为一个对象,但似乎是试图将数组作为对象访问。
var windowsize = $(window).width();
$(window).resize(function() {
windowsize = $(window).width();
$( "#imgs img" ).each(function (){
$( this ).setAttribute("style","width:"+windowsize+"px");
});
});
对不起,如果不清楚
任何帮助将不胜感激
答案 0 :(得分:2)
setAttribute是js方法而不是jquery方法。
您需要直接在DOM元素上使用原始js方法,或使用方法的jQuery version .attr()。
以下两种方式都相同,但亲自使用原生js感觉更好。
$( this ).attr("style","width:"+windowsize+"px");
this.setAttribute("style","width:"+windowsize+"px");
答案 1 :(得分:1)
.setAttribute()
是一种原生的Javascript方法。当您使用jQuery时,请使用.attr()
代替:
$(this).attr("style", "width:" + windowsize + "px");
或:
$(this).css("width", windowsize + "px");
甚至更好:
$(this).width(windowsize);