JavaScript在Firefox中工作,但不在Chrome和IE6中
我的JavaScript在Firefox 3.x.x中工作正常,但在IE *,Chrome,Safari中无法正常工作。调用函数之前的简单警报工作。下面是代码JavaScript在Firefox中工作,但不在Chrome和IE6中
function showDiv(div){
//alert(div);
document.getElementById(div).style.visibility='visible';
document.getElementById(div).style.height='auto';
document.getElementById(div).style.display='block';}
function hideDiv(div){
//alert(div);
document.getElementById(div).style.visibility='hidden';
document.getElementById(div).style.height='0px';
document.getElementById(div).style.display='none';
}
下面是HTML网页代码
<td align="center"><a onclick="showDiv('<?=$val['keyname']?>')" style="cursor:pointer;">Edit</a></td>
如果我把alert()
显示showDiv('<?=$val['keyname']?>')
则警告框出现,但功能并不比火狐狸等其他浏览器称为
请告诉我这个解决方案。
您发布的代码没有任何固有的错误。我建议你发布一个可重现的非工作示例:问题将出现在页面的其他地方。也许div
ID字符串不是唯一的(这是无效的HTML并会使行为不可靠);也许有一些其他的脚本的干扰,也许你有事件代码射击这是不是在一个跨浏览器的方式
写不过你尝试隐藏三种不同方式的元素似乎有点小题大做了我。只需一个display
更改就可以。
另一种方法是设置className='hidden'
或''
,并使用CSS规则将该类映射到display: none
。这样做的好处是,你不必知道有问题的元素是否是<div>
(即应恢复display: block
),一个<span>
(即应恢复display: inline
)或别的东西。 (与表格相关的元素有特定的问题。)
+1更优雅的解决方案 – 2010-09-09 11:10:07
语法对我来说看起来没问题。
确保文档中没有多个具有相同ID的元素,并且元素ID有效。
好点!同时确保案件正确。由于某些浏览器区分大小写(涉及到ID),有些则不是。 – Zoidberg 2010-09-09 11:01:56
是的,我确定在一个页面中没有多个具有相同名称的元素。所有元素都有不同的id。 – 2010-09-09 11:31:24
也许你可以试试:
function showDiv(div) {
var obj = document.getElementById(div);
if (obj) {
obj.style.display = "block";
obj.style.height = "auto";
} else {
alert("DIV with id " + div + " not found. Can't show it.");
}
}
function hideDiv(div) {
var obj = document.getElementById(div);
if (obj) {
obj.style.display = "none";
} else {
alert("DIV with id " + div + " not found. Can't hide it.");
}
}
不要叫document.getElementById
多次在相同的功能,使用一个变量来存储div
元素。如果已经发现通过document.getElementById(...)
的if (obj)
测试将只执行代码。
您可能会在错误控制台中收到错误。请始终包含这些内容,或说明没有内容。 – 2010-09-09 10:58:54
你能告诉我更多关于不工作的含义吗?这是一个JavaScript错误,这些功能都没有做什么?请详细说明不工作的部分。 – Zoidberg 2010-09-09 10:59:40