Jquery - 检查元素是否为空

时间:2014-12-07 13:43:21

标签: javascript jquery html html5

我试图获取div的值,然后使用jquery输出它。但是,它似乎不起作用。

这是我的代码:

    <div id="container">
        <p id="textbit"></p>
    </div>
    <script type="text/javascript">

        $(document).ready(function() {
        var barcode = $('#textbit');
        var container = $('#container');

        setTimeout(function() {barcode.text('1233')}, 5000);


        barcode.each(function() {
            if (barcode.html().length > 0) {
                var codereader = barcode.text();
                container.hide(100);

                alert('The code is '+ codereader);
            }
        });

        });
      </script>

当我没有setTimeout函数时它会起作用,但将来会使用AJAX动态填充这个div。

非常感谢任何帮助!

3 个答案:

答案 0 :(得分:0)

Javascript是单线程的,setTimeout函数是异步函数。它并没有像你想象的那样延迟5000ms的代码执行。它只调度5000ms后执行的回调函数。

在安排要执行的回调后,javascript将继续执行setTimeout函数下面的代码。执行回调后5000ms后,setTimeoutYou下面的代码已经执行。当您尝试获取值时,html尚未设置,因为它已安排在5000毫秒后设置。

如果你想模拟AJAX时间延迟,你可以将获取值的代码移动到一个新函数中并在settimeout回调中调用它。

$(document).ready(function() {
    var barcode = $('#textbit');
    var container = $('#container');

    var success = function(){
        barcode.each(function() {
        if (barcode.html().length > 0) {
            var codereader = barcode.text();
            container.hide(100);

            alert('The code is '+ codereader);
        }
    }

    setTimeout(function() {
       barcode.text('1233');
       success();
    });

   }, 5000);

 });

答案 1 :(得分:0)

在这种情况下,你需要检查&#34;完成&#34;承诺将在AJAX完成后执行。

同样如此。

$(document).ready(function() {
var barcode = $('#textbit');
var container = $('#container');

setTimeout(function() {
    barcode.text('1233');
    barcode.each(function() {
        if (barcode.html().length > 0) {
            var codereader = barcode.text();
            container.hide(100);

            alert('The code is '+ codereader);
        }
    });
}, 5000);
});

Ajax是异步的,执行将继续到下一行,稍后在完成时指向。提供的回调将被执行。您需要按顺序执行此操作。

答案 2 :(得分:0)

使用ajax完成事件:当ajax完成其任务时,此代码将运行

完成:功能(xhr,状态){

    alert( "The request is complete! now u can get other function form here" );
    getvalues();
}