JS:无法读取Undefined

时间:2016-02-05 23:12:45

标签: javascript

我正在尝试检查所有输入框,如果旁边有一个图像标记,其中包含src中的某个图像位置。

var productThumb = document.getElementsByTagName("img").src;
var inputs = document.getElementsByTagName("input");
for (var i = 0, max = inputs.length; i < max; i++) {
    imgSrc = productThumb[i];
    if (inputs[i].type === 'checkbox' && imgSrc.indexOf("/img/folder/1/") === 0 )
        inputs[i].checked = true;
}

当我运行此代码时,我在标题中收到错误。怎么了?我是javascript的新手,所以我不知道我做错了什么,但我认为它必须是var = productThumbimgSrc = productThumb[i]。声明变量的正确方法是什么?

4 个答案:

答案 0 :(得分:1)

if ( bgwidth < 0 ) { bgwidth = 0; } else if ( bgwidth > 100 ) { bgwidth = 100; } 返回类似数组的结构(HTMLCollection)。因此,getElementsByTagName未定义,因为productThumb中没有src属性。

只需从示例中的第1行删除HTMLCollection,然后在第4行的末尾添加.src,您就应该好了。

答案 1 :(得分:1)

您的代码应该是这样的:

var productThumb = document.getElementsByTagName("img");
var inputs = document.getElementsByTagName("input");
for (var i = 0, max = inputs.length; i < max; i++) {
    imgSrc = productThumb[i].src;
    if (inputs[i].type === 'checkbox' && imgSrc.indexOf("/img/folder/1/") === 0 )
        inputs[i].checked = true;
}

这是因为,在第1行中,getElementsByTagName返回一个img元素数组。因此,从一系列元素中获取src是没有意义的。

答案 2 :(得分:0)

我认为正确的解决方案是在.src前面简单添加[0],这将选择集合中要引用的img。

示例。

var productThumb = document.getElementsByTagName("img")[0].src;

答案 3 :(得分:0)

或者,jQuery提供了一个简单的解决方案。

var productThumb = document.getElementsByTagName("img").src;

var输入= document.getElementsByTagName(“输入”);

会成为这个

$productThumb = $('#PARENTid').find('img')[0].src;
$inputs = $('#PARENTid').find('input')[0].src;

如果要使用多个库(它们可能是),现在可以提供额外的兼容性

jQuery(function($){                                                      
$productThumb = $('#PARENTid').find('img')[0].src;
$inputs = $('#PARENTid').find('input')[0].src;                                     
});