Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
IE Javascript点击问题_Javascript_Internet Explorer_Click - Fatal编程技术网

IE Javascript点击问题

IE Javascript点击问题,javascript,internet-explorer,click,Javascript,Internet Explorer,Click,首先,我正在开发一个应用程序,它的编写使得一些典型的调试工具无法使用(或者至少我不知道如何使用:) JavaScript、html等在部署之前都是经过“烹调”和编码的(我想,我对流程的工作方式有点模糊),所以我不能将VS2005附加到ie,firebug lite也不能很好地工作。另外,界面是在框架中的(糟糕),所以其他一些工具也不能正常工作 Firebug在Firefox中工作得很好,Firefox没有这个问题(Safari也没有),所以我希望有人能发现我的代码在IE中使用的方式有“明显”的错

首先,我正在开发一个应用程序,它的编写使得一些典型的调试工具无法使用(或者至少我不知道如何使用:)

JavaScript、html等在部署之前都是经过“烹调”和编码的(我想,我对流程的工作方式有点模糊),所以我不能将VS2005附加到ie,firebug lite也不能很好地工作。另外,界面是在框架中的(糟糕),所以其他一些工具也不能正常工作

Firebug在Firefox中工作得很好,Firefox没有这个问题(Safari也没有),所以我希望有人能发现我的代码在IE中使用的方式有“明显”的错误。关于Firebug的古怪之处,我们可以提供更多信息,但让我们从这里开始

基本上,我有一个函数,通过使普通表行不可见,将表“折叠”到其标题中。我在
标记中有
“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中更多的东西。)