Javascript无法在Firefox上运行

时间:2010-11-05 20:21:35

标签: javascript

  

可能重复:
  'innerText' works in IE, but not in Firefox

为什么以下脚本适用于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>

4 个答案:

答案 0 :(得分:7)

innerText属性在Firefox上不起作用,该属性是IE特定的(尽管Opera / Chrome支持IIRC)。

Firefox使用W3C标准Node::textContent属性。

答案 1 :(得分:3)

  1. 我没有看到“evt”来自哪里,但在Firefox和IE
  2. 中引用事件对象的方式不同
  3. Firefox没有“innerText”属性进行操作
  4. (那个“evt”的东西让我想知道即使在IE中这是如何工作的。)

答案 2 :(得分:1)

CMS是对的,但也不完整。

var elem1 = evt.srcElement || evt.target; 

此行失败,因为'evt未定义'

答案 3 :(得分:1)

evt is undefined

除非你从onclick处理程序传递事件对象,否则你的代码片段中不包含的内容Firefox不知道什么是evt。如果要以这种方式查找目标,请将其作为参数传递给函数。