Javascript 获得;“未定义”不是一个函数;错误

Javascript 获得;“未定义”不是一个函数;错误,javascript,jquery,css,Javascript,Jquery,Css,我已经研究了几个与此相关的问题,寻找答案,但没有找到答案。下面是产生错误的代码: function centerGalImages() { var len = $('.image').filter(':visible').length; for (var i = 0; i < len; i++ { var contWidth = $('.img-container')[i].width(); var imgWidth = $('.image'

我已经研究了几个与此相关的问题,寻找答案,但没有找到答案。下面是产生错误的代码:

function centerGalImages() {
    var len = $('.image').filter(':visible').length;
    for (var i = 0; i < len; i++ {
        var contWidth = $('.img-container')[i].width();
        var imgWidth = $('.image')[i].width();
        var leftOffset = (contWidth/2) - (imgWidth/2);
        img.css({left: leftOffset});
    }
}
对于调用
width()

编辑:根据要求,这里是相关的HTML:

<div>
    <div class="img-container"><img class="image clickable" src=""/></div>
    <div class="img-container"><img class="image clickable" src=""/></div>
    ...container/image elements are copied 16 times...
</div>

…容器/图像元素被复制16次。。。
src
值设置在jquery文件的开头。因此,在调用
centerGalImages()
时,已使用此代码设置了
src

$('.img-container')[i].width();
您正在尝试调用
HTMLImageElement
width
方法。这是不存在的。因此出现了错误
width
是jQuery实例的方法,因此应该是

$('.img-container').eq(i).width();
UPD。根据HTML结构,这可能看起来更好:

$('.image').filter(':visible').css('left', function() {
    var contWidth = $(this).parent().width();
    var imgWidth = $(this).width();
    return (contWidth/2) - (imgWidth/2);
});

你会得到什么错误?
TypeError:undefined不是一个函数(计算“$”('.img container')[i].width()”)
你也可以添加你的HTML,你的代码可以简单得多,但需要查看HTML结构。注意,
$('.img container')
返回一个非HTML结构的函数array@Teemu,有多个div带有
.img container
,因此它实际上返回了一个数组。
.img container
引用了多个
div
,因此不应该
$('.img container')
返回
div
sYes的数组,我注意到了。在这种情况下,您应该使用
$.fn.eq
方法按索引获取相应的容器。但是最好提供HTML,这样我可以给你更好的解决方案。这会分别调整每个图像的位置,还是所有图像在其父元素中都有相同的位置?它会根据每个图像的宽度和父元素的宽度分别计算
left
$('.image').filter(':visible').css('left', function() {
    var contWidth = $(this).parent().width();
    var imgWidth = $(this).width();
    return (contWidth/2) - (imgWidth/2);
});