Javascript jquery for循环问题

时间:2011-08-29 11:28:45

标签: javascript jquery for-loop

当我运行这个for循环时它给了我名字bob和jacob它说undefined有没有人知道为什么?

        $(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" />   

4 个答案:

答案 0 :(得分: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+ "    ");
    }


});

答案 1 :(得分:0)

由于document.write()替换了旧的html,这意味着首先删除了track1 {1}}

使用提醒工作here

.write()

答案 2 :(得分:0)

第一次调用document.write时,用html文本bob替换dom

当第二次迭代在for循环中运行时,jacob不再出现在dom中 - 这就是写入undefined的原因。

另外,由于您没有使用var关键字x,因此count和track现在是窗口对象的全局变量。

答案 3 :(得分: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() );