2013-11-25 2 views
1

Я пытаюсь работать, если значения изменились через javascript. По существу, выполняйте проверку текстового поля, чтобы узнать, меняется ли значение.Неопределенное значение Javascript

Однако, когда я ставлю значение в переменную, оно возвращается как неопределенное. Ясно, что я делаю что-то глупое, но моя усталая голова не может это решить.

Вот что я делаю:

<script> 
    var stableCount; 
    $(document).ready(function() { 
     $('.div-updated').hide(); 
     $("#responsecontainer").load("CyberTable.aspx"); 
     stableCount = $(".rowcount").val(); 
     var refreshId = setInterval(function() { 
      alert(stableCount + " - " + $(".rowcount").val()) 
      $("#responsecontainer").load('CyberTable.aspx?t' + Math.random()); 
     }, 3000); 
     $.ajaxSetup({ cache: false }); 
    }); 
</script> 

stableCount в предупреждении возвращается как неопределенные, но rowcount.val() возвращается с номером

EDIT: Пожалуйста, просто не спускайтесь без причины. Насколько мне известно, я следил за всеми правилами, чтобы опубликовать это и попытался сделать это сам.

+1

Нагрузка является асинхронной операцией - он запускает нагрузку, но вы знаете только его завершается, когда какой-либо обратный вызов возвращает успех, а не когда следующая команда запускает – vogomatix

+0

Я бы установил «stableCount = $ («. rowcount »). val() || 0;" таким образом, stableCount получит значение, если оно не определено. – Kalpers

+2

Опубликуйте свой код. Скажите мне, значение '.rowcount' whats return? – Chinmay235

ответ

1

Этот ответ проясняет то, что я сказал в своем комментарии. После запуска операции загрузки он запускается как отдельный процесс, и вы знаете, что он загрузил данные, когда вызывается полный или обратный вызов. код нуждается в модификации, чтобы иметь обратный вызов операции загрузки и запуска событий таймера внутри обратного вызова

<script> 
$(document).ready(function() { 
    $('.div-updated').hide(); 
    $("#responsecontainer").load("CyberTable.aspx", 
     // callback function here.... 
     function() { 
      var stableCount = $(".rowcount").val(); 
      var refreshId = setInterval(function() { 
       alert(stableCount + " - " + $(".rowcount").val()) 
      $("#responsecontainer").load('CyberTable.aspx?t' + Math.random()); 
      }, 3000); 
    }); 

    $.ajaxSetup({ cache: false }); 
}); 

+0

Это имеет смысл. Спасибо, что нашли время, чтобы объяснить, почему он делает то, что он сделал. – TMB87

+0

+1 Спасибо @vogomatix ... :) – Chinmay235

1

.load является асинхронным. Из-за этого значение $ (". Rowcount"). Val() не определено в момент присвоения значения stableCount, но доступно через 3 секунды в функции интервалов.

+1

Я не понимаю, как асинхронность нагрузки влияет на значение входных данных? По крайней мере, код, который он представил, не поддерживает это. – Esko

+1

lol Я получил там первый, но в качестве комментария :-) @ Esa - см. Мой комментарий – vogomatix

+0

Так нет ли способа сделать это вообще? – TMB87

1

use stableCount переменная в объеме объекта документа. Поскольку stableCount не является глобальным здесь

<script> 
$(document).ready(function() { 
    $('.div-updated').hide(); 
    $("#responsecontainer").load("CyberTable.aspx"); 
    var stableCount = $(".rowcount").val(); 
    var refreshId = setInterval(function() { 
     alert(stableCount + " - " + $(".rowcount").val()) 
     $("#responsecontainer").load('CyberTable.aspx?t' + Math.random()); 
    }, 3000); 
    $.ajaxSetup({ cache: false }); 
}); 

+0

Исправить, но не ответ на вопрос :-) – vogomatix

Смежные вопросы