2011-08-29 524 views
0

當我運行這個for循環時,它給了我名字bob和jacob它說undefined有沒有人有任何想法爲什麼?Javascript jquery for循環問題

 $(function(){ 

     count = 1; 

     for(x=0; x <= count; x++) 
     { 
      track = $('#track' + x).val(); 
      document.write(track); 
     } 

    }); 

    <input type="hidden" id="track0" value="bob" /> 
<input type="hidden" id="track1" value="jacob" /> 
+0

是你把你的標識符引號?確保他們被添加在數字周圍,而不僅僅是#track – rownage

+0

只是一個建議:輸入字段應始終由他的名字,而不是由他的id(即使它工作正常)調用。 – reporter

回答

3

寫入文檔會刪除您以前的HTML。所以,你不能通過id訪問元素了。 提醒或將其寫入某個div而不是文檔給出適當的響應。

http://jsfiddle.net/KjHFM/

<span id='test'> RESULT : </span> 


$(function(){ 

    count = 1; 

    for(x=0; x <= count; x++) 
    { 
     track = $('#track' + x).val(); 
     alert(track); // or $('#test').append(track+ " "); 
    } 


}); 
+0

這不是jQuery,但只是簡單的JavaScript,當jquery被加載時觸發。 –

0

因爲document.write()取代舊的HTML,這意味着TRACK1被刪除與第一.write()

作品here與警報

<script>  $(function(){ 

     count = 1; 

     for(x=0; x <= count; x++) 
     { 
     $("#content").append(x+' is '+$('#track' + x).val()); 
     } 

    });</Script> 
<div id="content"></div> 
<input type="hidden" id="track0" value="bob" /> 
<input type="hidden" id="track1" value="jacob" /> 
0

第一次調用文件撰寫你正在用html文本bob替換dom

當第二次迭代在for循環中運行時jacob不再在dom中 - 這就是爲什麼undefined被寫入的原因。

此外,由於您未使用var關鍵字x,count和track現在都是窗口對象的全局變量。

+0

謝謝詹姆斯yuo警報正在工作 –

0

document.write()以非常激進的方式更改DOM,替換原始內容。

正確的jQuery的符號是:

jQuery(function($){ 
    $("input").each(function(index){ 
     alert(index + ': ' + $(this).get(0).id + ' = ' + $(this).val()); 
    }); 
}); 

您也可以用替換警戒線添加您現在看到的警告框體文字如下:

$("body").append(index + ': ' + $(this).get(0).id + ' = ' + $(this).val());