我只是想知道是否可以在Javascript中使用for loop
声明多个变量。
示例:我有4个<article>
元素,其ID为article1
article2
article3
和article4
。我不想独立地声明每个变量,而是想在循环中完成它(因为它们使用的代码基本相同,我不想重复自己!)。
类似的东西:
window.ready = function(){
for (var i=1; i<=4; i++){
var article[i] = document.getElementById("article" + i);
}
}
以上内容会返回一个意外[
的错误,因此我的语法必须关闭(我对JS来说很新),但(a)是否在正确的轨道上如果我在window.ready函数中运行它们,那么(b)这些是全局变量吗?
答案 0 :(得分:6)
您无法使用[
char设置变量名称。使用它,你会得到一个javascript的例外。您可以使用List / Array来执行此操作,尝试使用Array类,例如:
window.ready = function() {
var articles = new Array();
for (var i=1; i<=4; i++){
articles[i] = document.getElementById("article" + i);
}
}
使用Array类,您不需要指定长度,但如果需要,可以在构造函数上设置它。
var articles = new Array(4);
另一种方法是使用push
方法在数组上添加元素,用于示例:
window.ready = function() {
var articles = []; // define an empty array
for (var i=1; i<=4; i++){
articles.push(document.getElementById("article" + i));
}
}
答案 1 :(得分:4)
首先要注意的是JavaScript函数具有函数作用域而不是块作用域,这意味着'article'不是for循环所特有的。因此,在var article
块中声明for
可能会误导运行时实际发生的情况。
要实现以下目标后的工作:
window.ready = function(){
var article = [];
for (var i=1; i<=4; i++){
article.push(document.getElementById("article" + i));
}
}
<强>参考强>
答案 2 :(得分:2)
每次循环时都在创建一个新的文章数组。
在输入“for”循环之前创建一个文章数组。
article = new Array(4);
for (var i=1; i<=article.length; i++){
article[i] = document.getElementById("article" + i);
}
答案 3 :(得分:1)
您可以尝试使用eval
:
for (var i = 1; i <= 4; i++) {
eval( 'var article'+i+' = document.getElementById("article' + i +'");' );
}
这将像普通变量一样工作,它们只在本地范围内可见。这可能是一个不好的做法,所以只需创建一个数组或哈希表来存储动态变量。
答案 4 :(得分:1)
而不是你可以抓住所有<article>
元素:
var articles = document.getElementsByTagName("article");
// access them in a loop
for(var i=0; i<articles.length; i++)
{
console.log("Hey I'm " + articles[i].id);
}
答案 5 :(得分:0)
在使用数组之前声明数组 例如:var article = []; //较新版本的新数组() 然后按原样编写代码......
希望这会有所帮助