JS:无法设置undefined的属性

时间:2015-12-31 21:35:12

标签: javascript html

我有以下JS代码:

<script type="text/javascript">
var a = document.getElementsByClassName("sub_category_image");
for( i=0; i < a.length ; i++){
  var b = a[i];
  b.style.width = "100px";
  b.style.height = "100px";
}
</script>

<script type="text/javascript">
var x = document.getElementsByClassName("sub_category_image").alt;
var y = document.getElementsByClassName("sub_category_image");

if (x = "Cool Beans") {
  y.style.width = "200px";
  y.style.height = "200px";
}
</script>

第一个脚本,更改了所有可用图像的图像大小,但它使其他图像看起来很丑陋&#34;。

第二个脚本是我收到Cannot: set property 'width' of undefined.错误的地方。我告诉JS寻找包含&#34; Cool Beans&#34;的第一个alt标签。如果发现改变了样式的宽度和高度。怎么了?我相信它必须对我var y的声明做一些事情,但我没有解决它的线索。

2 个答案:

答案 0 :(得分:2)

函数document.getElementsByClassName()返回一个数组(您可以通过复数名称来表示:getElement s 通过 Something )。

因此,您必须设置xy的索引才能对数组的一个元素进行操作:

<script type="text/javascript">

var x = document.getElementsByClassName("sub_category_image");    

for (var i=0; i<x.length; i++) {
  if (x[i].alt === "Cool Beans") {
     x[i].style.width = "200px";
     x[i].style.height = "200px";
  }
}

</script>

答案 1 :(得分:1)

您的代码无法按预期方式运行。

您必须迭代您的元素并找到合适的元素。

var a = document.getElementsByClassName("sub_category_image");
for (var i=0; i < a.length; i++) {
    var b = a[i];
    if (b.alt == "Cool Beans") {
        b.style.width = "100px";
        b.style.height = "100px";
    }
}