为什么以下脚本适用于IE和Safari而不适用于Firefox?
<html>
<head><script type="text/javascript">
function ShowHide(strTag ,strAttribute){
var elem = document.getElementsByTagName(strTag);
var elem1 = evt.srcElement || evt.target;
for (var i=0;i<elem1.children.length;i++){
elem1.children[i].innerText=="4" ? elem1.children
[i].innerText="6":elem1.children[i].innerText="4";
}
for (var i =0;i<elem.length;i++) {
if(elem[i].getAttribute(strAttribute)=="yes") {
elem[i].style.display=='none'? elem[i].style.display='block':elem
[i].style.display='none';
}
}
}
</script>
<div id=div1 onclick="ShowHide('div','exp2');">
<font face=Webdings color=BLACK>4</font> click here for some expandable
divs...</div>
<div id=div2 exp2='yes' style="display:none;">I'm a div!</div>
<div id=div3 exp2='yes' style="display:none;">More of them divs...</div>
<div id=div4 exp2='yes' style="display:none;">Me too! divs...</div>
</body>
</html>
答案 0 :(得分:7)
innerText
属性在Firefox上不起作用,该属性是IE特定的(尽管Opera / Chrome支持IIRC)。
Firefox使用W3C标准Node::textContent
属性。
答案 1 :(得分:3)
(那个“evt”的东西让我想知道即使在IE中这是如何工作的。)
答案 2 :(得分:1)
CMS是对的,但也不完整。
var elem1 = evt.srcElement || evt.target;
此行失败,因为'evt未定义'
答案 3 :(得分:1)
evt is undefined
除非你从onclick处理程序传递事件对象,否则你的代码片段中不包含的内容Firefox不知道什么是evt。如果要以这种方式查找目标,请将其作为参数传递给函数。