2013-05-22 4 views
1

TreeView 컨트롤이있는 페이지가 있고 부모 노드가 선택되어 있으면 자식 노드도 검사됩니다. 그것은 자바 스크립트를 사용하여 완료되었습니다. 그러나 열 페이지가 IE9와 부모 노드를 확인하려고 할 때, 나는의 오류 얻을 것이다 :Microsoft JScript 런타임 오류 : IE9에서 개체가 'getElementsByTagName'속성 또는 메서드를 지원하지 않습니다.

마이크로 소프트의 JScript 런타임 오류 : 개체가 속성 또는 메서드를 지원하지 않습니다 'getElementsByTagName'

function AreAllSiblingsChecked(chkBox) 
{ 
var parentDiv = GetParentByTagName("div", chkBox); 
var childCount = parentDiv.childNodes.length; 
for(var i=0;i<childCount;i++) 
{ 
      var prevChkBox = parentDiv.childNodes[i].getElementsByTagName("input")[0]; 
      //if any of sibling nodes are not checked, return false 
      if(prevChkBox.checked) 
      { 
       return true; 
      } 
} 
return false; 
} 

//utility function to get the container of an element by tagname 
function GetParentByTagName(parentTagName, childElementObj) 
{ 
var parent = childElementObj.parentNode; 
while(parent.tagName.toLowerCase() != parentTagName.toLowerCase()) 
    { 
     parent = parent.parentNode; 
    } 
return parent; 
} 

누군가가이 문제를 해결할 수 있도록 도와 주시면 감사하겠습니다. 미리 감사드립니다 ...

+0

을 :

가장 쉬운 수정 프로그램은 사용하기 전에 방법의 존재를 확인하는 것입니다? –

+0

예. 그것은 IE8에서 잘 작동합니다. –

+0

오류를 재현 할 수있는 곳이 있습니까? –

답변

0

IE9에서 childNodes []는 텍스트 태그 (주석 또는 공백)와 하위 태그를 반환합니다. 텍스트 노드는 getElementsByTagName()을 지원하지 않습니다. 기본 DOM 모델 here에 대한 좋은 요약이 있습니다. 나는이 다른 브라우저에서 작동 있으리라 믿고있어

function AreAllSiblingsChecked(chkBox) 
{ 
    var parentDiv = GetParentByTagName("div", chkBox); 
    var childCount = parentDiv.childNodes.length; 
    for(var i=0;i<childCount;i++) 
    { 
     if (parentDiv.childNodes[i].getElementsByTagName) { 
      var prevChkBox = parentDiv.childNodes[i].getElementsByTagName("input")[0]; 
      //if any of sibling nodes are not checked, return false 
      if(prevChkBox.checked) 
      { 
       return true; 
      } 
     } 
    } 
    return false; 
} 
관련 문제