For Loop with Array不起作用

时间:2016-05-01 23:56:51

标签: javascript jquery

我有一个按钮,可以在words变量中添加一个单词。当数组处于特定长度时,我希望图像的src根据数组长度而改变。似乎无法让它发挥作用。

var words = [];

var str = words;
for (var i = 0; i < str.length; i++) {
    if (str[i].length === 1) {
        img.src = "http://placehold.it/350x150"


        if (str[i].length === 2) {
            img.src = "http://placehold.it/200x150"

        }
    }
 }

4 个答案:

答案 0 :(得分:3)

您正在验证位置的长度,您需要直接验证阵列:

if (words.length === 1) {
  img.src = "http://placehold.it/350x150"
} else if (words.length === 2) {
  img.src = "http://placehold.it/200x150"
}

对于那种情况,你不需要循环

答案 1 :(得分:1)

假设您想要在某些断点处动态更改图像,您还必须在按钮上注册回调以确定是否需要更新。

var words = [];

$(button).click(function() {
  words.push("whatever");
  var img = // get img here

  if (words.length === 1) {
    img.src = "http://placehold.it/350x150";
  } else if (words.length === 2) {
    img.src = "http://placehold.it/200x150";
  } 

  // etc
});

编辑:这是一个小提琴,所以你可以看到它有效https://jsfiddle.net/4273v7c7/

答案 2 :(得分:0)

你不需要循环。

var words = [];
var str = [0,"http://placehold.it/350x150", "http://placehold.it/200x150", ... ];
img.src = str[words.length] || img.src; 

这将完成这项工作。

答案 3 :(得分:0)

正如Oriol评论的那样,“在if(str[i].length === 2)中嵌套if(str[i].length === 1)是没用的。”

应该是:

var words = [];

var str = words;
for (var i = 0; i < str.length; i++) {
    if (str[i].length === 1) {
        img.src = "http://placehold.it/350x150";
    }
    else if (str[i].length === 2) {
        img.src = "http://placehold.it/200x150";
    }
}