未定义的Javascript值

时间:2013-11-25 13:19:35

标签: 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()返回时带有数字

编辑:请不要无理由地投票。据我所知,我已遵循所有规则发布这个并尝试自己做。

3 个答案:

答案 0 :(得分:1)

.load是异步的。因此,$(“。rowcount”)。val()在您分配stableCount值时未定义,但在间隔函数中3秒后可用。

答案 1 :(得分:1)

在文档对象的范围内使用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 });
});

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