Internet Explorer在JavaScript中不执行某些if情况

Internet Explorer在JavaScript中不执行某些if情况,javascript,internet-explorer-11,Javascript,Internet Explorer 11,我正在用xslt创建一个html文件。我有一些JavaScript代码来过滤一些表行。在InternetExplorer11上,如果我的JavaScript没有被执行,我不知道为什么,因为我的开发控制台中没有错误。 下面您可以看到一些JavaScript代码,其中包含用于已执行和未执行if情况的命令 如果我将If(I>2&&modelRange.textContent!=行[I-1].getElementsByTagName(“td”)[0].textContent){更改为If(I>2)它将执

我正在用xslt创建一个html文件。我有一些JavaScript代码来过滤一些表行。在InternetExplorer11上,如果我的JavaScript没有被执行,我不知道为什么,因为我的开发控制台中没有错误。 下面您可以看到一些JavaScript代码,其中包含用于已执行和未执行if情况的命令

如果我将
If(I>2&&modelRange.textContent!=行[I-1].getElementsByTagName(“td”)[0].textContent){
更改为
If(I>2)
它将执行if case。因此
.textContent
.getElementsByTagName
肯定有问题,但我不知道为什么,也不知道如何更改,因为没有错误,而且它正在使用Firefox

我还包括了
console.log(行)

JavaScript:

function test_internet_explorer() {

    // Variables
    var table, checkBox, filterCheckBox, filterDropDown, rows, cells, secret, modelRange, dropdown, rowCount;
    dropdown = document.getElementById('modelRangeDropdown');
    table = document.getElementById('myTable');
    rowCount = table.rows.length; 
    checkBox=document.getElementById('identicalSecrets');
    rows = table.getElementsByTagName("tr");    
    console.log(rows)       
    filterCheckBox = checkBox.checked; 
    filterDropDown = dropdown.value;
    var index = 0; 


    for (var i = 0; i < rows.length; i++) { 
        var row = rows[i];
        cells = row.getElementsByTagName("td"); 
        modelRange = cells[0] || null; 
        secret = cells[3]; 

        // does not execute
        if (i > 2 && modelRange.textContent != rows[i - 1].getElementsByTagName("td")[0].textContent) {
            rows[i - 1].getElementsByTagName("td")[2].firstChild.nodeValue = "-";
            alert('script loaded');
        }

        // does execute
        if (i === rowCount - 1) { 
            rows[i].getElementsByTagName("td")[2].firstChild.nodeValue = "-";
        }

        // does not execute
        if (i > 2 && modelRange.textContent === rows[i - 1].getElementsByTagName("td")[0].textContent) {
            rows[i - 1].getElementsByTagName("td")[2].firstChild.nodeValue = rows[i].getElementsByTagName("td")[1].textContent;
        }
    }

}
功能测试\u internet\u explorer(){
//变数
变量表、复选框、filterCheckBox、filterDropDown、行、单元格、机密、modelRange、下拉列表、行计数;
dropdown=document.getElementById('modelRangeDropdown');
table=document.getElementById('myTable');
rowCount=table.rows.length;
复选框=document.getElementById('identicalCrets');
行=table.getElementsByTagName(“tr”);
console.log(行)
filterCheckBox=checkBox.checked;
filterDropDown=dropdown.value;
var指数=0;
对于(var i=0;i2&&modelRange.textContent!=行[i-1].getElementsByTagName(“td”)[0].textContent){
行[i-1]。getElementsByTagName(“td”)[2]。firstChild.nodeValue=“-”;
警报(“已加载脚本”);
}
//执行
如果(i==行计数-1){
行[i]。getElementsByTagName(“td”)[2]。firstChild.nodeValue=“-”;
}
//不执行
如果(i>2&&modelRange.textContent==行[i-1].getElementsByTagName(“td”)[0].textContent){
行[i-1]。getElementsByTagName(“td”)[2]。firstChild.nodeValue=行[i]。getElementsByTagName(“td”)[1]。文本内容;
}
}
}
XSLT:


秘密
飞机
全部的
日期
秘密
隐藏相同的秘密
开始
结束

在我的例子中,一个可能的解决方案是使用
innerText
而不是
textContent
如果IE11出现问题,使用
textContent

只是出于好奇,该文本值中是否有连字符?你能添加一些重现问题的HTML吗?对IE11不确定,但检查一下我已经添加了一些HTML代码d是的,文本值中有连字符。这仍然是否定的。如果案例测试表的内容,那么在不知道这些内容的情况下,我们不能做任何事情。也就是说,我确实注意到一些HTML问题。并且不应该有结束标记。但我相信这与您的问题无关。
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:template match="/">
<html>
    <head><title>Secrets</title></head>

<body onload="test_internet_explorer();">

<table id="myTable">
        <colgroup>
            <col width="150" style="background-color:e2e2e2"></col>         
        </colgroup>
        <tr  style ="background-color:a5a5a5">
            <th rowspan="2">plane
                <select id="modelRangeDropdown" onchange="test_internet_explorer()">
                     <option selected="selected">All</option>
                     <xsl:for-each select="logstore/plane">
                        <option>
                         <xsl:value-of select="Name" />
                        </option>
                     </xsl:for-each>                    
                </select>                   
            </th>   
            <th colspan="2" width="330">date</th>
            <th rowspan="2">Secret
                <input type="checkbox" id="identicalSecrets" onchange="test_internet_explorer()"></input>
                <label for="identicalSecrets">hide identical secrets</label>
            </th>
        </tr>

        <tr>
            <th align="center" style="background-color:a5a5a5">begin</th>
            <th align="center" style="background-color:a5a5a5">end</th>
        </tr>
        <xsl:for-each select="logstore/plane/trigger">
            <tr>
                <td align="center"><xsl:value-of select="../Name"/></td>
                <td align="center"><xsl:value-of select="date"/></td>
                <td align="center"><xsl:value-of select="date"/></td>
                <td><xsl:value-of select="secret"/></td>
            </tr>
        </xsl:for-each>
    </table>    
    <script type="text/javascript" src="test_internet_explorer.js"></script>    
</body>
</html>
</xsl:template>
</xsl:stylesheet>