2009-11-11 3 views
0

IE7에서 innerHTML 버그에 대한 해결 방법을 찾을 수 없습니다. 동적으로 생성 된 HTML의 내용을보고 텍스트가 "-1"인 경우 변경해야합니다. 프로토 타입 js 갤러리를 사용하고 있지만 수정 사항을 찾을 수 없습니다. 어떤 아이디어?innerHTML과 텍스트 비교 IE7 문제

JS는 :

<script language="javascript" type="text/javascript"> 
    Event.observe(window, 'load', function() { 
    var num = 1; 
    var allAccountInfoItems = $A('accountInfoItem'); 
    var numofElements = (allAccountInfoItems.length); 

    for (var x = 0; x < numofElements; x++) 
    { 
     var oldHTML = $('accountInfo').innerHTML; 
     var newHTML = "Unlimited"; 

     if (oldHTML == "-1") 
     { 
      $('accountInfo').update(newHTML); 
     } 

     var oldId = $('accountInfo').id; 
     var numPlus = num++; 

     $('accountInfo').id = oldId + numPlus; 
    } 

}); 
</script> 

답변

0

당신은 공백을 트리밍하려고 했습니까? 텍스트 내용 주위에 공백 텍스트 노드가있을 수 있습니다. 그래도 문제가 해결되지 않으면

$('accountInfo').innerHTML.strip() 

, 당신이 정말 점점 값이 무엇인지 볼 수 alert(oldHTML)을 시도해보십시오.


(!) 참고 : 당신이 ["a", "c", "c", "o", "u", "n", "t", "I", "n", "f", "o", "I", "t", "e", "m"]에서 $A('accountInfoItem') 결과를 실현? 이것은 의도적입니까?

0

$ A는 배열을 변환합니다. $$()를 CSS 선택기와 함께 사용하고 싶다고 생각합니다. 귀하의 경우에는, 그것은 클래스 이름으로 accountInfoItem을 가진 요소의 목록이 될 수 있기 때문에 점은

$$('.accountInfoItem'); 

될 것이다.

0

innerHTML을 얻을 수있는 적절한 (DOM 쉬운) 방법은 element.childNodes [0] 코드에서,

그래서

을 .textContent, 그것은 다음과 같습니다

var oldHTML = $('accountInfo').childNodes[0].textContent; 

당신은 아마 원하는 것 텍스트 만 가지고 있는지 확인하기 위해 Roatin이 언급 한 문자열을 제거하십시오.

var oldHTML = $('accountInfo').childNodes[0].textContent.strip(); 
+0

FYI 'textContent'는 모든 버전의 IE에서 실패합니다 (OP에 중요한지 확실하지 않음). –

+0

아, IE는 innerText를 사용합니다. 답장을 보내 주셔서 감사합니다. – paulj