javascript - 我试图找到这段代码中的错误,测试我的 javascript 代码

标签 javascript

哟社区!这里可能需要一些见解..:)我正在学习一些更高级的 js 概念。我正在运行此代码,但结果没有按照我的预期显示......我看不到错误......有什么想法吗?谢谢!

<script type="text/javascript">

    (function() {
        var results, queue = [];
        this.assert = function(pass, msg) {
            var type = pass ? "PASS" : "FAIL";
            var str = "<li class='" + type + "'><b>" +
                      type + "</b> " + msg + "</li>";
            if ( queue )
                queue.push( str );
            else    
                results.innerHTML += str;
        };

        window.addEventListener("load", function() {
            results = document.getElementById("results");
            results.innerHTML = queue.join('');
            queue = null;
        });

        // calling assert but it's not showing up the <li> with the message....( why? ) 
        assert( true, "I always pass!" );
    })();
</script>

最佳答案

".is there any chance that else-statement will be used? why is the idea of the else-statement?"

这样assert()函数的工作原理是,如果在文档加载事件发生之前调用它,则任何结果都会存储在 queue 中。数组:条件if (queue)为真,因为 queue引用数组。

然后,当加载处理程序运行时,它会获取 queue 中已有的所有内容。并将其输出到results设置之前的元素queue为空:

results.innerHTML = queue.join('');
queue = null;

任何调用assert()的电话之后文档加载后会发现if (queue)是假的,因为 queue为空,所以else将被执行,任何结果将直接输出到 results元素。

在如图所示的代码中,只有一次对 assert() 的调用它会在文档加载处理程序运行之前发生。

(这是一个笨拙的演示 - 按下按钮将在加载事件之后:http://jsfiddle.net/JDFuR/1/)

关于javascript - 我试图找到这段代码中的错误,测试我的 javascript 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11014611/

相关文章:

javascript - 将向量参数传递给弹出窗口

javascript - 如何禁用 CSS 属性并使其无效

javascript - 选择所有复选框javascript

javascript - 返回已解决的 promise 和仅处理解决的常规 promise 之间的区别

javascript - NodeJS - 将每个 HTTP 请求的 session 数据存储在 "global"变量中

javascript - 如何根据页面上不同对象的位置在 Javascript/Mootools 中定位箭头

javascript - Qualtrics,视频开始后出现下一个按钮

javascript - Angular 2 如何与 jquery 一起使用?

javascript - NodeJS MySQL : Query when second parameter is null

javascript - 尝试用jQuery让div随机出现,效果不理想