Я использую xslt для чтения XML-файла и отображения его содержимого в таблице.Я использую раскрывающееся меню для фильтрации некоторых модельных диапазонов и флажок для фильтрации идентичных строк.Все отлично работает на Firefox, но не на Internet Explorer.Выпадающее меню выпадает, и я могу поставить галочку, но ничего не могу отфильтровать.Также невозможно изменить любую запись таблиц в Internet Explorer.Например: я изменяю ячейки с последним временем окончания на «-», но IE не меняет это.Я знаю, что есть несколько «решений» для некоторого кода, работающего в Internet Explorer, но любое решение не работает для меня.
Вот некоторый соответствующий код xslt:
<?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="script_for_all_functions();">
<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="script_for_all_functions()">
<option selected="selected">All</option>
<xsl:for-each select="logstore/Fahrzeug">
<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="script_for_all_functions()"></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="/C:/eclipse-workspace/adclasses/src/inbox/script_for_all_functions.js"></script>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
И некоторые (не полный) код JavaScript:
function script_for_all_functions() {
// Variables
let 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");
filterCheckBox = checkBox.checked;
filterDropDown = dropdown.value;
let index = 0;
for (let row of rows) { // `for...of` loops through the NodeList
// Verschiedene Spalteninhalte in Variabeln schreiben
cells = row.getElementsByTagName("td");
modelRange = cells[0] || null;
secret = cells[3];
//=============================================================================================================
//=============================================================================================================
// Code for Drop-Down-Menu
// if the Drop-Down-Menu is set to 'All', or this is the header row, or 1nd `td` text matches filter
if (filterDropDown === "All" || !modelRange || (filterDropDown === modelRange.textContent)) {
if (filterCheckBox == false) {
row.style.display = "table-row"; // show this row
}
else if (filterCheckBox == true) {
if (index === 2) {
row.style.display = "table-row"; // show this row
}
else if (index > 2) {
loop: {
for (let i = 1; index - i > 1; i++) {
if (modelRange.textContent === rows[index - i].getElementsByTagName("td")[0].textContent && secret.textContent === rows[index - i].getElementsByTagName("td")[3].textContent) {
rows[index - i].getElementsByTagName("td")[2].firstChild.nodeValue = rows[index].getElementsByTagName("td")[2].textContent;
row.style.display = "none"; // hide this row
}
else {
row.style.display = "table-row";
break loop;
}
}
}
}
}
}
else {
row.style.display = "none"; // hide this row
}
//=============================================================================================================
//=============================================================================================================
//=============================================================================================================
//=============================================================================================================
// Code for Checkbox
if (index > 2) {
if (filterCheckBox == true) {
loop: {
for (let i = 1; index - i > 1; i++) {
if (modelRange.textContent === rows[index - i].getElementsByTagName("td")[0].textContent && secret.textContent === rows[index - i].getElementsByTagName("td")[3].textContent) {
rows[index - i].getElementsByTagName("td")[2].firstChild.nodeValue = rows[index].getElementsByTagName("td")[2].textContent;
row.style.display = "none"; // hide this row
}
else {
break loop;
}
}
}
}
else {
if (filterDropDown === "All") {
row.style.display ="table-row";
}
else if (modelRange.textContent === filterDropDown){
row.style.display = "table-row";
}
}
}
//=============================================================================================================
//=============================================================================================================
index++;
}
}