2010-11-05 79 views
2

可能重复:
'innerText' works in IE, but not in Firefox的Javascript不能在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> 
+0

什么是不正确的工作。 – Gabe 2010-11-05 20:22:56

+0

什么?尝试重新格式化。二进制的小块可以帮助你进行代码格式化,请使用它。 – 2010-11-05 20:23:27

+0

什么不行? – 2010-11-05 20:27:14

回答

7

innerText属性不会在Firefox上运行,该属性是IE特有的(虽然IIRC由歌剧/铬的支持)。

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

+0

另外'evt'从无处出现。 – 2010-11-05 20:30:59

+0

@josh,对,他需要将事件对象从* intrinsic *'onclick'事件属性中传递给他的'ShowHide'函数。 – CMS 2010-11-05 20:32:54

3
  1. 我没有看到“EVT”从何而来,但事件对象在Firefox和IE中引用不同
  2. Firefox不会有操纵

一“的innerText”属性(即“evt”的东西让我想知道这是如何工作,即使在IE浏览器。)

1

CMS是正确的,但也不完整。因为“EVT没有定义”

1

evt is undefined

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

此行失败,除非你传递从onclick处理某处不包括在你的代码片段Firefox中的事件对象具有不知道evt是。如果您想以这种方式查找目标,请将其作为参数传递给函数。