Я работаю над школьным проектом, который должен дать студентам возможность искать институты и дополнительную информацию о них.JavaScript onLoad function + IE = проблемы
После поиска результаты отображаются следующим образом: невозможно отобразить изображение, нужно получить репутацию 10, я сделаю это позже.
Это работает, я использую эту OnLoad функцию:
function onLoad() {
for (i = 0; i < document.getElementsByTagName("tr").length; i++) {
if(document.getElementsByTagName("tr")[i].id.length != 0) {
document.getElementsByTagName("tr")[i].style.visibility = "collapse";
}
}
}
, но когда я использую IE7 Я первый только получить несколько институтов (обычно 19)
Тогда я нажимаю на одном из знаков плюса, которые держат это функция:
function uitvouwen(trId,imgId) {
var url = document.getElementById(imgId).src;
if (url.indexOf("Images/plus.gif") != -1) {
for (i = 0; i < document.getElementsByTagName("tr").length; i++) {
if(document.getElementsByTagName("tr")[i].id == trId) {
document.getElementsByTagName("tr")[i].style.visibility = "visible";
}
}
url = "Images/minus.gif";
} else if(url.indexOf("Images/plusbottom.gif") != -1) {
for (i = 0; i < document.getElementsByTagName("tr").length; i++) {
if(document.getElementsByTagName("tr")[i].id == trId) {
document.getElementsByTagName("tr")[i].style.visibility = "visible";
}
}
url = "Images/minusbottom.gif";
} else if (url.indexOf("Images/minus.gif") != -1) {
for (i = 0; i < document.getElementsByTagName("tr").length; i++) {
if(document.getElementsByTagName("tr")[i].id == trId) {
document.getElementsByTagName("tr")[i].style.visibility = "collapse";
}
}
url = "Images/plus.gif";
} else if(url.indexOf("Images/minusbottom.gif") != -1) {
for (i = 0; i < document.getElementsByTagName("tr").length; i++) {
if(document.getElementsByTagName("tr")[i].id == trId) {
document.getElementsByTagName("tr")[i].style.visibility = "collapse";
}
}
url = "Images/plusbottom.gif";
}
document.getElementById(imgId).src = url;
}
Weird достаточно все 19 результаты получают теперь отображаются
Так что мой вопрос:
остановить ли IE7 моего OnLoad код (может быть, потому что это слишком много для обработки) или я должен искать ошибки в моей программе?
В других браузерах эта программа работает отлично ..
Это код фактический HTML, JSTL и код JavaScript (я знаю, что это грязно, но это упражнение на JSTL, поэтому мне нужно использовать):
<c:forEach var="instituut" items="${ requestScope.instituten}">
<table id="LijstResultaten<%= i %>" summary="LijstResultaten<%= i %>">
<%
i++;
if (instituten.size() != i) {
%>
<c:set var="urlLijn" scope="session" value="Images/line.gif"/>
<c:set var="urlMin" scope="session" value="Images/minus.gif"/>
<c:set var="urlPlus" scope="session" value="Images/plus.gif"/>
<c:set var="urlLijnLong" scope="session" value="Images/linelong.gif"/>
<% } else {
%>
<c:set var="urlLijn" scope="session" value="Images/empty.gif"/>
<c:set var="urlMin" scope="session" value="Images/minusbottom.gif"/>
<c:set var="urlPlus" scope="session" value="Images/plusbottom.gif"/>
<c:set var="urlLijnLong" scope="session" value="Images/empty.gif"/>
<% }
%>
<tr>
<td><img alt="" id="instituut<%= i %>" name="instituut<%= i %>" src="${ urlPlus}" onclick="uitvouwen('MeerInfoInstituut<%= i %>','instituut<%= i %>')" onmouseover="cursorVeranderen()" style="cursor: pointer;"/></td>
<td colspan="4">${instituut.name}</td>
</tr>
<tr id="MeerInfoInstituut<%= i %>">
<td><img alt="" name="lijn" src="${ urlLijn}" onclick="init();"/></td>
<td><img alt="" name="join" src="Images/join.gif"/></td>
<td colspan="2">Land:</td>
<td><%= landen.get(i - 1).getName() %></td>
</tr>
<tr id="MeerInfoInstituut<%= i %>">
<td><img alt="" name="lijn" src="${ urlLijn}"/></td>
<td><img alt="" name="join" src="Images/join.gif"/></td>
<td colspan="2">Stad:</td>
<td>${ instituut.city }</td>
</tr>
<tr id="MeerInfoInstituut<%= i %>">
<td><img alt="" name="lijn" src="${ urlLijn}"/></td>
<td><img alt="" name="join" src="Images/join.gif"/></td>
<td colspan="2">Postcode:</td>
<td>${ instituut.zipcode }</td>
</tr>
<tr id="MeerInfoInstituut<%= i %>">
<td><img alt="" name="lijn" src="${ urlLijn }"/></td>
<td><img alt="" name="join" src="Images/join.gif"/></td>
<td colspan="2">Straat:</td>
<td>${instituut.street}</td>
</tr>
<tr id="MeerInfoInstituut<%= i %>">
<td><img alt="" name="lijn" src="${ urlLijn }"/></td>
<td><img alt="" name="join" src="Images/join.gif"/></td>
<td colspan="2">Website:</td>
<td>
<c:choose>
<c:when test="${ instituut.website == 'Onbekend' }">
${ instituut.website }
</c:when>
<c:otherwise>
<a href="http://${ instituut.website }" >${ instituut.website }</a>
</c:otherwise>
</c:choose>
</td>
</tr>
<%
ArrayList<ArrayList<Outgoing_student>> studentlijst = (ArrayList<ArrayList<Outgoing_student>>) request.getAttribute("studentlijst");
ArrayList<ArrayList<Outgoing_teacher>> docentlijst = (ArrayList<ArrayList<Outgoing_teacher>>) request.getAttribute("docentlijst");
int aantalStudenten = studentlijst.get(i - 1).size();
int aantalDocenten = docentlijst.get(i - 1).size();
String resultaatStudentnamen = "";
String resultaatDocentnamen = "";
int j = 0;
for (Outgoing_student studentNamen : studentlijst.get(i - 1)) {
resultaatStudentnamen += "<tr id=\"MeerInfoStudenten" + i + "\">\n";
resultaatStudentnamen += "\t\t\t\t\t\t<td><img alt=\"\" name=\"lijn\" src=\"" + (instituten.size() != i ? "Images/line.gif" : "Images/empty.gif") + "\"/></td>\n";
resultaatStudentnamen += "\t\t\t\t\t\t<td><img alt=\"\" name=\"lijn\" src=\"Images/line.gif\"/></td>\n";
resultaatStudentnamen += "\t\t\t\t\t\t<td><img alt=\"\" name=\"join\" src=\"" + (studentlijst.get(i - 1).size() != (j + 1) ? "Images/join.gif" : "Images/joinbottom.gif") + "\"/></td>\n";
resultaatStudentnamen += "\t\t\t\t\t\t<td>" + studentNamen.getFirstname() + " " + studentNamen.getLastname() + "</td>\n";
resultaatStudentnamen += "\t\t\t\t\t</tr>\n";
j++;
}
j = 0;
for (Outgoing_teacher docentNamen : docentlijst.get(i - 1)) {
resultaatDocentnamen += "<tr id=\"MeerInfoDocenten" + i + "\">\n";
resultaatDocentnamen += "\t\t\t\t\t\t<td><img alt=\"\" name=\"lijn\" src=\"" + (instituten.size() != i ? "Images/line.gif" : "Images/empty.gif") + "\"/></td>\n";
resultaatDocentnamen += "\t\t\t\t\t\t<td><img alt=\"\" name=\"lijn\" src=\"Images/empty.gif\"/></td>\n";
resultaatDocentnamen += "\t\t\t\t\t\t<td><img alt=\"\" name=\"join\" src=\"" + (docentlijst.get(i - 1).size() != (j + 1) ? "Images/join.gif" : "Images/joinbottom.gif") + "\"/></td>\n";
resultaatDocentnamen += "\t\t\t\t\t\t<td>" + docentNamen.getFirstname() + " " + docentNamen.getLastname() + "</td>\n";
resultaatDocentnamen += "\t\t\t\t\t</tr>\n";
j++;
}
%>
<tr id="MeerInfoInstituut<%= i %>">
<td><img alt="" name="lijn" src="${ urlLijnLong }"/></td>
<td><img alt="" id="studenten<%= i %>" name="MeerInfoStudenten" src="Images/plus.gif" onclick="uitvouwen('MeerInfoStudenten<%= i %>', 'studenten<%= i %>')" style="cursor: pointer;"/></td>
<td colspan="2">Reeds bezocht door <span><%=aantalStudenten%></span> student(en)</td>
<td> </td>
</tr>
<%=resultaatStudentnamen%>
<tr id="MeerInfoInstituut<%= i %>">
<td><img alt="" name="lijn" src="${ urlLijnLong }"/></td>
<td><img alt="" id="docenten<%= i %>" name="MeerInfoDocenten" src="Images/plusbottom.gif" onclick="uitvouwen('MeerInfoDocenten<%= i %>','docenten<%= i %>')" style="cursor: pointer;"/></td>
<td colspan="2">Reeds bezocht door <span><%=aantalDocenten%></span> docent(en)</td>
<td> </td>
</tr>
<%=resultaatDocentnamen%>
</table>
Избавиться от этого стиля кодирования и migrateto JQuery. если вы это сделаете, используйте Аккордеонный контроль, если это то, что вы хотите. – 2010-12-05 10:51:31
Это не швы для меня проблема с загрузкой, это, вероятно, проблема HTML или проблема с CSS! вам лучше, если опубликовать фрагмент кода структуры
@aSeptik - спасибо, единственная проблема в том, что вы не можете использовать его в javascript, потому что не существует .getElementByClass. Это неправильный HTML, но у меня нет выбора – 2010-12-05 11:59:47
ответ
только ради сакэ и за помощью, конечно!;)
DEMO:http://jsbin.com/ewajo3
ваш код должен быть только один пример:
HTML
CSS
JAVASCRIPT
источник
2010-12-05 12:19:55
«Работает отлично» - это широкий термин, а в вашем случае неправильный.
Возьмите, к примеру, старинный автомобиль .. 50-летний автомобиль, который все еще ездит (10 миль в час) и до сих пор доставит вас до места назначения .... так что вы можете сказать, что «автомобиль работает отлично». Но он медленный, и он сильно ломается.
Ваш код тот же. Он неэффективен и может быть значительно улучшен без особых усилий.
Во всяком случае, ваша основная логика является неправильной, так как IE просто не поддерживает «коллапс», смотрите здесь: http://www.w3schools.com/css/pr_class_visibility.asp
Я скопировать соответствующую часть:
Нижняя линия, вам лучше вернуться к чертежной доске и найти другой способ достижения желаемого дизайна. jQuery - отличный выбор, у вас есть много всего доступного для вас, всего один поиск.
источник
2010-12-05 11:33:26
Смежные вопросы