哟社区!可能需要一些见解...... :)我正在学习更多先进的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>
答案 0 :(得分:0)
“。是否有可能使用else语句?为什么是else语句的想法?”
这个assert()
函数的工作方式是,如果在之前调用文件加载事件,则任何结果都存储在queue
数组中:条件{{ 1}}将为真,因为if (queue)
指的是数组。
然后,当加载处理程序运行时,它会占用queue
中已有的所有内容,并在将queue
设置为null之前将其输出到results
元素:
queue
在文档加载后对results.innerHTML = queue.join('');
queue = null;
的任何调用都会发现assert()
为false,因为if (queue)
为空,因此queue
将被执行,任何结果将直接输出到else
元素。
在您显示的代码中,只有一次results
调用,它将在文档加载处理程序运行之前发生。
(这是一个笨重的演示 - 按下按钮将在加载事件之后:http://jsfiddle.net/JDFuR/1/)