我想在载入页面时为指定ID下的a标签添加onclick事件,在火狐、谷歌、360极速上测试,这样写都能正常显示。便是IE6.0、IE7、IE8和一些IE内核的浏览器上测试,只有第一个for能成功添加,第二个for不成功,请问在应该如何写才可以在IE下正常显示function TestFun() {
function mk1(){
alert('函数1');
}
function mk2(){
alert('函数2');
}
function mk3(){
alert('函数3');
}
var aa = document.getElementById("divid1").getElementsByTagName('a');
var ab = document.getElementById("divid2").getElementsByTagName('a');
for (i = 0;i < aa.length; i++){
aa[i].onclick = mk1();
}
for (i = 0;i < ab.length; i++){
ab[i].onclick = mk2();
}}
window.onload=TestFun;
function mk1(){
alert('函数1');
}
function mk2(){
alert('函数2');
}
function mk3(){
alert('函数3');
}
var aa = document.getElementById("divid1").getElementsByTagName('a');
var ab = document.getElementById("divid2").getElementsByTagName('a');
for (i = 0;i < aa.length; i++){
aa[i].onclick = mk1();
}
for (i = 0;i < ab.length; i++){
ab[i].onclick = mk2();
}}
window.onload=TestFun;
好吧,楼主看下,这个可是直接把函数的返回值赋值给那个onclick事件了
aa[i].onclick = function{
mk1();
}
}
for (i = 0;i < ab.length; i++){
ab[i].onclick = function{
mk2();
}
}
这样?测试没问题
ab[i].onclick = function{
mk2();
}写成:
ab[i].onclick = function(){
mk2();
}的话,又显示下面的语法错误
window.onload=TestFun;
onload你就不加括号,但是onclick你干嘛要加个括号呢?
这两种方法你觉得哪种是对的呢
为IE的浏览器for一次,再为其它浏览器for一次。刚好全部兼容。呵呵,测试好了!
元素是否存在等等,这是你自己需要检查的问题
<script type="text/javascript">
function TestFun() {
function mk1(){
alert('函数1');
};
function mk2(){
alert('函数2');
};
function mk3(){
alert('函数3');
};
var aa = document.getElementById("divid1").getElementsByTagName('a');
var ab = document.getElementById("divid2").getElementsByTagName('a');
for (var i = 0;i < aa.length; i++){
aa[i].onclick = mk1;
};
for (var i = 0;i < ab.length; i++){
ab[i].onclick = mk2;
}
};
window.onload=TestFun;
</script>
<div id="divid1">
<a href="###">1</a>
<a href="###">2</a>
<a href="###">3</a>
</div><div id="divid2">
<a href="###">4</a>
<a href="###">5</a>
<a href="###">6</a>
</div>