当我运行这个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" />
答案 0 :(得分:3)
写入文档会删除以前的HTML。因此,您无法再通过id访问该元素。 警告或将其写入某个div而不是文档会给出正确的响应。
<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)
答案 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() );