2011-10-03 58 views
0

我是JavaScript新手,想問我一些簡單腳本的幫助。請幫助我使用這個簡單的腳本

我想要做的是藉助(for)循環檢索並顯示無序列表中的所有列表項元素的值。我能夠讓腳本逐一顯示警報窗口中的所有列表項目。但問題是我需要以表格行方式顯示的所有列表元素的值。就像這樣:

週一
週二
週三
.......

以下是我在我的腳本:

<script language="JavaScript"> 
<!-- 
    function process() { 
     a = document.getElementsByTagName('li') 

     for (i = 0; i < a.length; i++) { 
      alert(a[i].childNodes[0].nodeValue); 
     } 
    } 
//--> 
</script> 

這裏是HTML代碼:

<body> 
    <ul> 
     <li>Monday</li> 
     <li>Tuesday</li> 
     <li>Wednesday</li> 
    </ul> 

    <input type="button" value="Submit" onclick="process()" /> 
</body> 

如果這是可能的將anyo你也請解釋我的腳本中我錯了嗎?爲什麼所有3個列表項值無法一次顯示在警報窗口中?

非常感謝!

+1

如果沒有示例代碼,我無法提供協助。 –

+0

你想要一個表格行或列如何列出?它現在解析出什麼? – creativeedg10

+0

@Kris問題的格式不正確;代碼現在可見。 –

回答

1

首先,創建一個字符串變量:var all_at_once = ""。然後,添加nodeValue的內容。最後,提醒這個變量:

function process(){ 
    var a = document.getElementsByTagName('li') 
    var all_at_once = ""; 
    for(i=0;i<a.length;i++){ 
     all_at_once += a[i].childNodes[0].nodeValue + " "; 
    } 
    alert(all_at_once); 
} 
0
<script language="JavaScript"> 
<!-- 

    function process(){ 
     var data = ''; 
     a=document.getElementsByTagName('li') 

      for(i=0;i<a.length;i++){ 

        data = data + '\n' +(a[i].childNodes[0].nodeValue); 
      } 
     alert(data); 
    } 


//--> 
</script> 

你需要,如果你需要1個彈出的所有文字打電話警告一次。

1

alert重複顯示,因爲這是for循環所做的...循環!循環將迭代由getElementsByTagName返回的元素數組,爲該數組中的每個元素執行一次循環體。

如果你想顯示一個警告,一個辦法是建立包含相應的文本字符串,它alert事後:

var yourString = ""; 
for(i=0;i<a.length;i++){ 
    yourString += a[i].childNodes[0].nodeValue; 
} 
alert(yourString); 

在你的代碼的一些其他注意事項......你應該差不多了始終使用關鍵字var聲明變量以防止它們泄漏到全局範圍中。你也應該總是最後用分號線:

function process(){ 
    var a = document.getElementsByTagName('li'), 
     yourString = ""; 
    for(i=0;i<a.length;i++){ 
     yourString += a[i].childNodes[0].nodeValue; 
    } 
    alert(yourString); 
} 
+0

所有的答案都太棒了! 非常感謝您幫助我解決此問題!我正要提出學習JavaScript的想法:)我現在會嘗試更多 再次感謝! – user976813

0
function process() 
{ 
    var a = getElementsByTagName('li'), 
     text = ''; 

    for(i = 0; i < a.length; i++) 
    { 
    text += a[i].childNodes[0].nodeValue + '\n'; 
    } 

    alert(text); 
} 
0

您可以在陣列中存儲它們,然後再反覆處理中日任何方式你喜歡:

var days = new Array(); 
var a = document.getElementsByTagName('li') 
for(var i = 0; i < a.length; i++) { 
    days.push(a[i].childNodes[0].nodeValue); 
} 

for (i=0; i < days.length; i++) { 
    // process the day 
} 

有關工作示例,請參閱:http://jsfiddle.net/jkeyes/Cfg4k/

0

這些對您的功能的調整應該會產生您想要的結果。祝你好運! 改變了什麼:1)設置一個空字符串var 2)不是提醒每個值,而是將它們附加到你之前創建的字符串var 3)最後,提醒新創建的(連接的)字符串!

function process() { 
    a = document.getElementsByTagName('li'); 
    var days = new String(""); 

    for (i = 0; i < a.length; i++) { 
     days = days+(a[i].childNodes[0].nodeValue)+"\n"; 
    } 
    alert(days); 
} 

現在我看到已經有噸開業以來這個線程的答案...但也許所有不同的解決方案將幫助你以不同的方式。