0

我有一个问题,我在 jquery 中获取窗口大小,然后循环通过三个 img 元素以动态将宽度应用于内联样式。

问题是,当运行 foreach 循环时,我在控制台中收到此错误 Uncaught TypeError: Object [object Object] has no method 'setAttribute'

我在循环中放置了一个断点并将 setAttribute 应用于,它似乎工作正常。我不明白为什么当它循环遍历数组时,它没有将每个数组项视为一个对象,而是似乎试图将数组作为对象访问。

var windowsize = $(window).width();

$(window).resize(function() {

    windowsize = $(window).width();

    $( "#imgs img" ).each(function (){
        $( this ).setAttribute("style","width:"+windowsize+"px");

    });                                                                 
});

抱歉,如果不清楚

任何帮助将不胜感激

4

2 回答 2

2

setAttribute是一个 js 方法,而不是一个 jquery 方法。

您要么需要直接在 DOM 元素上使用 raw js 方法,要么使用jQuery 版本的 .attr()方法。

下面两种方式都是一样的,但是个人使用原生js感觉更好。

$( this ).attr("style","width:"+windowsize+"px");
this.setAttribute("style","width:"+windowsize+"px");
于 2013-07-26T16:28:37.180 回答
1

.setAttribute()是一种原生 Javascript 方法。当您使用 jQuery 时,请.attr()改用:

$(this).attr("style", "width:" + windowsize + "px");

或者:

$(this).css("width", windowsize + "px");

甚至更好:

$(this).width(windowsize);
于 2013-07-26T16:28:14.303 回答