今天测试了这样的一个实例:
html文件为:
<html>
<script src = "js1.js" type = "text/javascript"></script>
<body>
<pre id="message"></pre>
<button>target vs this</button>
</body>
<html>
js文件为:
window.onload = function ()
{
var abc = document.getElementsByTagName('button')[0]; //Elements!
abc.onclick = showTargetAndThis;
}
function showTargetAndThis(event){ // event driven, by clicking
var paragraph = document.getElementById("message"); // Element!
var eventInfo = createTargetAndThisInfo(event);
var textNode = document.createTextNode(eventInfo);
paragraph.appendChild(textNode);
}
function createTargetAndThisInfo(event)
{
var message = "target: " + event.target + "\n";
message += "this: " + this;
return message;
}
而网页能够完成的功能就是在点击按钮后能够输出一些关于window的信息。而这里我们利用firebug调试。
则下方会出现网页的脚本。在脚本的第九行有一个断点。我们执行程序,执行到断点处。点击执行后,状态变成:
不能再点击执行了。这是为什么呢?那是因为程序正在等待我们的点击事件发生。那么我们现在点击一下按钮,则执行状态会变成:
这是程序进入了showTargetAndThis函数中,再执行下面的代码,就不用说了,接着程序执行的结果是:
这样就成功执行了程序。
在做这个脚本时,我犯了一个错误,那就是getElementsByTagName 这里的element是复数形式,因为可能有多个同样的tag,返回的是一个数组。但是getElementById这个函数会返回第一个id等于参数的元素,因此就是一个普通的变量。我在写程序时,就没有看到这点,所以总是没有办法处理。其实这也和IDE有关系的,我用的是notepad++,是没有函数提醒的,纯手打,所以犯错总是无可避免的。但就是犯了这个错误,才对js有了一个看法,这对学习也是有好处的。当然啦,在编程效率来说,一个便捷的IDE,是必不可少的。