IE Javascript点击问题
首先,我正在开发一个应用程序,它的编写使得一些典型的调试工具无法使用(或者至少我不知道如何使用:) JavaScript、html等在部署之前都是经过“烹调”和编码的(我想,我对流程的工作方式有点模糊),所以我不能将VS2005附加到ie,firebug lite也不能很好地工作。另外,界面是在框架中的(糟糕),所以其他一些工具也不能正常工作 Firebug在Firefox中工作得很好,Firefox没有这个问题(Safari也没有),所以我希望有人能发现我的代码在IE中使用的方式有“明显”的错误。关于Firebug的古怪之处,我们可以提供更多信息,但让我们从这里开始 基本上,我有一个函数,通过使普通表行不可见,将表“折叠”到其标题中。我在IE Javascript点击问题,javascript,internet-explorer,click,Javascript,Internet Explorer,Click,首先,我正在开发一个应用程序,它的编写使得一些典型的调试工具无法使用(或者至少我不知道如何使用:) JavaScript、html等在部署之前都是经过“烹调”和编码的(我想,我对流程的工作方式有点模糊),所以我不能将VS2005附加到ie,firebug lite也不能很好地工作。另外,界面是在框架中的(糟糕),所以其他一些工具也不能正常工作 Firebug在Firefox中工作得很好,Firefox没有这个问题(Safari也没有),所以我希望有人能发现我的代码在IE中使用的方式有“明显”的错
标记中有“onclick='toggleDisplay”(“table元素”、“collapseimageelement”)”
,表以“class='closed'开头
在FF&Safari中,单次单击可折叠和展开表,但IE表需要多次单击(1到5之间的任意数字)才能展开。有时,在最初被“打开”后,表会在一次单击后展开和折叠一段时间,最终会恢复为需要多次单击。我可以从VisualStudio中看到的一点信息中看出,每次实际都会达到该函数。提前感谢您的建议
以下是JS代码:
bURL_RM_RID="some image prefix";
CLOSED_TBL="closed";
OPEN_TBL="open";
CLOSED_IMG= bURL_RM_RID+'166';
OPENED_IMG= bURL_RM_RID+'167';
//collapses/expands tbl (a table) and swaps out the image tblimg
function toggleDisplay(tbl, tblimg) {
var rowVisible;
var tblclass = tbl.getAttribute("class");
var tblRows = tbl.rows;
var img = tblimg;
//Are we expanding or collapsing the table?
if (tblclass == CLOSED_TBL) rowVisible = false;
else rowVisible = true;
for (i = 0; i < tblRows.length; i++) {
if (tblRows[i].className != "headerRow") {
tblRows[i].style.display = (rowVisible) ? "none" : "";
}
}
//set the collapse images to the correct state and swap the class name
rowVisible = !rowVisible;
if (rowVisible) {
img.setAttribute("src", CLOSED_IMG);
tbl.setAttribute("class",OPEN_TBL);
}
else {
img.setAttribute("src", OPENED_IMG);
tbl.setAttribute("class",CLOSED_TBL);
}
}
bURL\u RM\u RID=“一些图像前缀”;
已关闭\u TBL=“已关闭”;
打开\u TBL=“打开”;
关闭的IMG=bURL\u RM\u RID+'166';
打开的\u IMG=bURL\u RM\u RID+'167';
//折叠/展开tbl(表)并交换图像tblimg
功能切换显示(tbl、tblimg){
可见;
var tblclass=tbl.getAttribute(“类”);
var tblRows=tbl.rows;
var img=tblimg;
//我们是在扩大还是在折叠桌子?
如果(tblclass==CLOSED\u TBL)rowVisible=false;
else rowVisible=true;
对于(i=0;i
你试过换这一行吗
tblRows[i].style.display = (rowVisible) ? "none" : "";
差不多
tblRows[i].style.display = (rowVisible) ? "none" : "table-row";
或
你试过换这条线吗
tblRows[i].style.display = (rowVisible) ? "none" : "";
差不多
tblRows[i].style.display = (rowVisible) ? "none" : "table-row";
或
您可能希望将onclick调用放在实际的
标记上,而不是单个的
标记上。这样,HTML中的JS就更少了,这将使它更易于维护。您可能希望将onclick调用放在实际的
标记上,而不是单个的
标记上。通过这种方式,HTML中的JS更少,这将使其更易于维护。如果在IE(工具->Internet选项->高级)中启用脚本调试并放置“调试器;”语句,IE将在点击调试器语句时自动打开Visual Studio。如果在IE(工具->Internet选项->高级)中启用脚本调试并放置“调试器;”语句,IE将在点击调试器语句时自动打开Visual Studio。我在IE中遇到过这个问题。如果我没记错,我需要在最初生成的HTML上直接为“显示”样式输入初始值。例如:
<table>
<tr style="display:none"> ... </tr>
<tr style="display:"> ... </tr>
</table>
...
...
然后,我可以使用JavaScript更改样式,就像您这样做。我在IE中遇到过这个问题。如果我没记错的话,我需要在最初生成的HTML上直接为“显示”样式输入初始值。例如:
<table>
<tr style="display:none"> ... </tr>
<tr style="display:"> ... </tr>
</table>
...
...
然后我可以使用JavaScript来更改样式,就像您这样做。setAttribute在IE中不可靠。它将属性访问和对象属性访问视为同一件事,因此,由于“class”属性的DOM属性称为“className”,因此您必须在IE上使用它 此错误在新的IE8测试版中已修复,但直接使用DOM Level 1 HTML属性更容易:
img.src= CLOSED_IMAGE;
tbl.className= OPEN_TBL;
您还可以在样式表中进行表折叠,这将更快,并将省去在脚本中循环表行的麻烦:
table.closed tr { display: none; }
setAttribute在IE中不可靠。它将属性访问和对象属性访问视为同一事物,因此,由于“class”属性的DOM属性称为“className”,因此您必须在IE上使用它 此错误在新的IE8测试版中已修复,但直接使用DOM Level 1 HTML属性更容易:
img.src= CLOSED_IMAGE;
tbl.className= OPEN_TBL;
您还可以在样式表中进行表折叠,这将更快,并将省去在脚本中循环表行的麻烦:
table.closed tr { display: none; }
我总是使用style.display=“block”和style.display=“none”我总是使用style.display=“block”和style.display=“none”是的,它实际上在tr标签中……我只是在弄清楚如何写尖括号时感到疲惫。:)是的,它实际上在tr标签上……我只是在琢磨如何写尖括号当VS窗口打开时,它找不到实际的代码文件,因为它们在文件系统中的命名和组织方式不同。当VS窗口打开时,它找不到实际的代码文件,因为它们在文件系统中的命名和组织方式不同。这并不能解决问题,使其“自动”实际上会破坏IE中的更多内容:(不过,谢谢。这并不能解决问题,让它“自动”实际上会破坏IE中更多的东西。)