Javascript JQuery для проблемы цикла - PullRequest
0 голосов
/ 29 августа 2011

Когда я запускаю этот цикл 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 ]

3 голосов
/ 29 августа 2011

Запись в документ удаляет ваш предыдущий 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 голосов
/ 29 августа 2011

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() );
0 голосов
/ 29 августа 2011

При первом вызове document.write вы заменяете dom на html text bob

Когда вторая итерация выполняется в цикле for, jacob больше не находится в dom - вот почему пишется undefined.

Кроме того, поскольку вы не используете ключевое слово var x, count и track теперь являются глобальными переменными объекта окна.

0 голосов
/ 29 августа 2011

Поскольку document.write() заменяет старый html, это означает, что track1 удаляется первым .write()

Работает здесь с предупреждением

<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" />  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...