我有一个按钮,可以在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"
}
}
}
答案 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";
}
}