簡體   English   中英

javascript新手不理解數組

[英]New to javascript don't understand arrays

好的,我有一個簡單的HTML文檔:

<head>
</head>

<body>
<div id="notInvolved">  This div is static</div>
<div id="thing01"></div>
<div id="thing02"></div>
<div id="thing03"></div>
</body>

我想使用外部JavaScript來操作div。 我的計划如下

  1. 創建一個名為divCounter的數組
  2. 通過ID Thing ##添加div
  3. 獲取數組的長度
  4. 在由數組大小控制的for循環中,一次加載一個div,添加一些數據,移至下一個div,並添加更多數據,直到我沒有div為止。

我顯然不明白如何構建動態數組...(我不能靜態地做到這一點,我不知道最終我將擁有多少東西## div)

我以為我可以做var divCounter = [document.getElementById("thing"+ * + *)]; 然后添加字符串(例如thing01Thing02 )。 但這是行不通的。 如何為getElementById設置通配符? 如果不能,怎么辦?

有沒有辦法做到這一點,還是我吠錯了樹? 我討厭成為新手。

一般來講(因為您提供的代碼很少),當事物是唯一的時,應該使用ID;當需要分組訪問事物時,應使用類。 做這樣的事情更有意義:

<body>
  <div id="notInvolved">  This div is static</div>
  <div id="thing01" class="affected"></div>
  <div id="thing02" class="affected"></div>
  <div id="thing03" class="affected"></div>
</body>

一旦有了將它們組合在一起的東西,就可以使用document.getElementsByClassName('affected')來檢索它們。 這比嘗試使用for循環或其他某種構造來檢索單個元素要有意義得多。

您可以使用通配符選擇頁面上的所有元素,然后使用正則表達式過濾元素。

 var all =document.getElementsByTagName('*');
 var r = /^thing\d+$/;
 var test = function(el){
      return r.test( el.getAttribute('id'));
 }
 var elements = [];
 for(var i=0,l=all.length;i<l;i++)
     If(test(all[i]))
         elements.push(all[i]);

您應該在要修改的動態div上使用類,然后遍歷getElementsByClassName的結果:

var dynamicDivs = document.getElementsByClassName('dynamic');

for (var i = 0; i < dynamicDivs.length; i++) {
    // do whatever you want with dynamicDivs[i]
}

我不完全了解您要完成的工作。 無論如何,要讓您了解如何僅在其ID以字符串“ thing”開頭的情況下向數組添加元素,這是一個簡單示例,說明如何使用for循環,getElementByTagName函數以及如何使用訪問DOM元素的屬性。 您真正想做的事情(將元素添加到數組中)是使用divCounter數組的push方法完成的。

var everyDiv = document.getElementsByTagName('div');
var divCounter = [];
for( var i = 0; i < everyDiv.length; i++ ){
    var currentDiv = everyDiv[i];
    var currentID = currentDiv.id; 
    if (currentID != null && currentID.indexOf('thing') == 0){
        divCounter.push(currentDiv);
    };
}
var res = divCounter.length;

當然,這是為了清楚起見,我會從另一個角度來解決這個問題,並且會以更簡潔的方式對其進行編碼。 我同意其他答案:這些div之間共享一個類是選擇這些元素的最佳方法。 一個相同的(具有相同的程序性方法)示例是:

var everyDiv = document.getElementsByTagName('div'), 
    divCounter = [], 
    i, currentID;
for( i = 0; i < everyDiv.length; i++ ){
    currentID = everyDiv[i].id;
    if ( currentID && currentID.indexOf('thing') == 0){
        divCounter.push(everyDiv[i]);
    };
}

這是完全一樣的,只是在開頭聲明了變量。 因為在JavaScript中變量的范圍是函數而不是代碼塊,所以理想的情況是在開始時使用單個“ var”聲明來啟動函數。

function load() {
  var divTags = document.getElementsByTagName("div");
  var divArray = new Array();
  var j = 0;
  for(i = 0; i < divTags.length; i++) {
    if(divTags[i].id.substr(0,5) == "thing") {
      divArray[j++] = divTags[i].id;
    }
  }
  for(i = 0;i < divArray.length; i++)
    alert(divArray[i]);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM