2010-06-26 5 views
5

웹 페이지의 이미지를 수정하는 코드를 작성했습니다. 파이어 폭스와 사파리에서 작동합니다. 그러나 인터넷 익스플로러와 함께 작동 시키려고 노력하는 것은 저를 곤란하게합니다. 탐색기에서 "parentNode"에 해당하는 항목은 무엇입니까? 아니면 어떻게 작동 시키는가?Internet Explorer의 "parentNode"와 같습니다.

images = document.getElementsByTagName('img') 
parms = {}; 

for (a=0;a < images.length;a++){ 
    parent = images[a].parentNode; // <-- What to substitute for explorer? 
    parms[a] = {}; 
    parms[a].bigsrc=parent.getAttribute("href"); 
    parms[a].w_o = images[a].width; 
    parms[a].h_o = images[a].height; 
    parms[a].IsBig = false; 
    parms[a].loaded = false; 
    images[a].border=0; 
    parent.setAttribute("href","javascript:MakeBig('"+a+"')"); 
} 
+2

몇 가지 일반적인 의견 :'images','parms','a' 및'parent'를 로컬로 선언 할 때'var'을 사용하십시오; 'setAttribute'를 사용하여'href'를 설정하지 말고 대신'parent.href'를 사용하십시오 (IE freaks out); 아마도'parms'가 (일반적인 객체 대신에) 배열이되기를 원할 것입니다 :'var parms = [];'; [obsolete] (http://dev.w3.org/html5/markup/img.html) 인'border' 속성 대신에'images [a] .style.border = "none"'을 설정하기를 원할 것입니다 # img.attrs.border). –

+0

문제를 재현 할 수 있도록 일부 HTML을 제공해 주시겠습니까? –

+0

(Firefox에서 작동하지만 IE가 아닌) 코드의 예는 다음과 같습니다. http://woodgears.ca/workshop/jacques/min.html 멋진 이미지 확대/축소 효과입니다. 탐색기 (또는 오페라) –

답변

12

문제는 "parent"라는 var에 parentNode를 할당하는 것입니다. 이것은 IE에서 코드를 깨뜨리는 예약어로 보인다. var 이름을 변경하면 제대로 작동합니다.

+1

감사. 그것은 그것을 고쳤다. IE만이 나에게 유용한 오류 메시지를 주었다면. –

+7

'parent'는 ** 아닙니다 ** 예약어입니다. 'var parent = images [a] .parentNode; '를 사용했다면 괜찮을 것입니다. 'parent'는 윈도우 객체의 부모 프레임에 대한 참조를 제공하고 IE에서 명백히 (그리고 합법적으로) 설정할 수없는 호스트 객체이고'parent = images [a] .parentNode;는 그것을 설정하려고 시도합니다. –

+0

Ahh가 나에게 많은 번거 로움을 덜어주었습니다 - 감사합니다! 나는 그 대답이 예약어가 아니라는 것을 반영하기 위해 편집되어야한다고 생각한다. 그러나 그것은 여전히 ​​내 견해에서 정답이다. – LeonardChallis

0

parentNode가 앵커가 될 것으로 기대합니까? 이미지에서 링크를 감싸려고하는 것 같습니다. 그것이 맞다면 대안으로 작용할 수있는 것은 이미지 자체에 onclick을 추가하고 핸드 커서를 설정하는 것입니다. 부모 노드가 무엇인지 신경 쓰지 않고도 이미지 모양을 링크로 만들 수 있습니다.

+0

"앵커"가 무슨 뜻인지 잘 모르겠습니다. 이미지를 클릭 할 때 가리키는 링크를 변경하려고합니다. –

+0

앵커는 링크를 만드는 데 사용되는 태그입니다. HTML에서 링크를 만들 때 태그는 'a'입니다. 자바 스크립트를 사용하여 이미지를 둘러싼 앵커 태그를 수정하는 대신 이미지 자체의 onclick을 수정하지 않으시겠습니까? 다시 말하지만 parentNode가 무엇인지 신경 쓰지 않아도됩니다. –

2

parentNode은 IE에서 정상적으로 작동합니다 (certain cases은 예외). 오류는 코드에서 거의 확실합니다.

+0

탐색기가 "parentNode"문에서 실패하기 때문에 나머지 코드는 실행되지 않습니다. –

+1

자신을 반복 할 위험이 있으므로 ** parentNode는 지원되며 IE **에서 올바르게 작동합니다. 문제는 다른 곳에있다. HTML을 제공하면 어디에서 말할 수 있습니다. –

+0

Tim이 문제가 다른 곳에서 정확한지 확인하십시오. 내가 생각하는 곳의 최신 답변을 확인하십시오. –

관련 문제