2010-12-05 2 views
1

저는 학교 프로젝트를 진행 중이며, 학생들에게 기관 및 추가 정보를 검색 할 수 있어야합니다.자바 스크립트 onLoad 함수 + 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; 

}

이상한 충분 모두 19 개 결과 지금

를 표시하세요

그래서 제 질문은 :

(취급이 너무 어쩌면 때문에)

는 IE7 내에 onLoad 코드를 중지합니까 또는 내 프로그램 오류를 찾습니다해야합니까? 이 프로그램은 완벽하게 작동 다른 브라우저에
..

이 코드 실제 ​​HTML, JSTL 및 자바 스크립트 코드 (나는 그것이 더러운입니다하지만 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>&nbsp;</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>&nbsp;</td> 
    </tr> 
    <%=resultaatDocentnamen%> 
</table> 

+0

은 코딩 및 migrateto JQuery와의이 스타일을 제거하십시오. 그렇게 할 경우 Accordion 컨트롤을 원하는대로 사용할 수 있습니다. –

+0

그것은 아마 HTML 문제이거나 CSS 문제 일 것입니다. 이미지 대신 구조의 코드 스 니펫을 게시하는 것이 좋습니다 ...! @ 재니 - 귀하의 응답은 OP 질문과는 아무 상관이 없습니다! –

+0

@aSeptik - 감사합니다. 유일한 문제는 .getElementByClass가 없기 때문에 자바 스크립트에서 사용할 수 없다는 것입니다. 그것은 HTML이 잘못되었지만 선택의 여지가 없습니다 –

답변

0

그냥 술과 도움을 위해서!;)

DEMO :http://jsbin.com/ewajo3

코드는 단지 예를 들어 있어야한다 :

HTML

<tr id='caption_<%= i %>' class='tr_caption'>  
    <td>Lorem Ipsum Est <%= i %></td>  
    <td>   
    <a id='show_<%= i %>' href='javascript:;' onclick='show(this.id);'>+</a> 
    <a id='hide_<%= i %>' href='javascript:;' onclick='hide(this.id);'>-</a> 
    </td> 
</tr> 
<tr id='content_<%= i %>' class='tr_content'> 
    <td colspan=2>The Brown Fox Jump Hover The Lazy Dog</td> 
</tr> 

CSS

.tr_content { display:none } 

JAVASCRIPT

function show(elm) { 
    var id = 'content_' + elm.split('_')[1]; 
    document.getElementById(id).style.display='block'; 
} 
function hide(elm) { 
    var id = 'content_' + elm.split('_')[1]; 
    document.getElementById(id).style.display='none'; 
} 
+0

당신은 왜 그렇게 생각하지 않았을까? 고맙습니다. –

0

"완벽하게 작동합니다"는 광범위한 용어이며, 귀하의 경우에는 잘못되었습니다.

예를 들면. 고대 차를 타고 가라. 아직도 (10 MPH)를 몰고 아직도 당신을 목적지에 데려가는 50 년 된 차 ..... 그래서 당신은 "차가 완벽하게 작동하고있다"고 말할 수있다. 그러나 그것은 느리고 많은 일을합니다.

코드는 동일합니다. 그것은 효율적이지 않고 적은 노력으로 크게 향상시킬 수 있습니다. IE는 단순히 "붕괴"를 지원하지 않는

어쨌든, 당신의 코어 로직이뿐만 아니라, 잘못 여기를 참조 :

참고 : 없음 버전의 http://www.w3schools.com/css/pr_class_visibility.asp

내가 관련 부분을 복사합니다 Internet Explorer (IE8 포함)은 값 "상속"또는 "축소"를 지원합니다.

결론 다음으로 도면 보드로 돌아가서 원하는 디자인을 얻는 다른 방법을 찾아보십시오. jQuery는 탁월한 선택입니다. 많은 검색 결과를 한 번에 검색 할 수 있습니다.

+0

그래, 고마워. 유일한 문제는 내가 JQuery를 배웠지 않아서 (학교와 규칙을) 사용할 수 없다는 것입니다. 하지만 도구를 가지고 다른 방법을 알아낼 것입니다. –

+0

@Steve OK 충분히 공정하게 .. 가장 좋은 방법은 style.visibility 대신 style.display로 작업하려고합니다. 디스플레이를 "none"으로 설정하면됩니다. 숨겨진 다음 버튼을 다시 펼치십시오. –

+0

우리 학교는 항상 이런 식으로 새로운 프로그래밍 코드를 배웁니다. 우리는 프로젝트를 얻습니다. 우리가 배운 것을 사용할 수 있기 때문에 무엇인가 투쟁 한 다음 새로운 것을 배우고 스스로 생각합니다. 시간의,이 코드와 나는 easely 이전 일을 할 수 있습니다. –