2012-05-24 2 views
1

웹 사이트를 개발 중이며 모든 것이 Chrome, Safari, Firefox (Windows 및 Mac 용)에서 완벽하게 작동하는 멋진 단계 중 하나입니다. 그런 다음 IE 용으로 24 시간을 추가로 보냈습니다.jQuery - IE7 - 변수가 정의되지 않았습니다. Chrome, Safari, Firefox에서 작동합니다.

나는 여러 해 동안 열심히 노력해 왔지만, 마지막으로 일어나고있는 일은 변수가 끊임없이 IE7에서 '정의되지 않음'이라는 것입니다.

data-title이라는 html5 데이터 속성에서 가져옵니다.

저는 둘러 보았고 thisthis stackoverflow 질문에서 제공되는 솔루션을 시도했습니다.

Uncaught TypeError: Object [object Object] has no method 'getAttribute'

:

따라서, 나는

$(this).attr('data-title'); 

$(this).data('title'); 

을 시도하고 마지막 솔루션

var newTitle = $(this).getAttribute("data-title"); 

에 관한 한 오류가 발생합니다

<div class="mc-image collection-image" title="" style="background-image: url(http://www.server.com/image.jpg); position: absolute; top: 0px; left: 0px; z-index: 12; opacity: 1; display: block; width: 1292px; height: 670px; " data-title="The&nbsp;Title" data-href="#collection-description-172"></div>

내가 텍스트를 설정합니다 data-title 속성을 사용하고 있습니다 :

것은이 요소가 jQuery Maximage

에 의해 생성되기 때문에 나는에서 getElementById와 변수를로드 할 수있다 요소는 다음과 같이 외모를 생성 maximize/jQuery주기가 이미지를 바꿀 때 div의 다른 div에서.

나는 완전한 손실에 처해 있는데, 어떤 도움이라도 대단히 감사하겠습니다.

+0

참고로 IE7은 HTML5 브라우저가 아니므로이 속성과 관련된 문제가있을 수 있습니다. IE7이 비표준 속성을 처리하는 방법을 100 % 확신하지는 않습니다. 그런 말로 IE7 지원을 중단했습니다. 일하는 사람이 2.3 % 미만의 사람들이 여전히 IE7을 사용하고 있기 때문에 결과물을 얻는 데 필요한 입력 양은 산출량보다 적습니다! 출처 : http://www.w3schools.com/browsers/browsers_explorer.asp 또는 다른 관점에서 보면 97.7 %의 사람들이 IE7을 사용하고 있지 않습니다. – jmort253

+0

@ jmort253 정보를 제공해 주셔서 감사합니다. 나는 IE7이 실제로 그렇게 중요하지 않다는 것을지지한다. 그래서 브라우저를 IE8로 업그레이드했고 불행하게도 변수를 아직 정의되지 않은 상태로 만들고있다. 이 아이디어를 디버깅하는 방법은? 디버그를 시도했지만 오류가 발생하지 않습니다. – waffl

+0

$ (this)의 시계를 추가하고 검사하면 어떻게됩니까? 그 안에 뭐가 들어 있니? 그냥 언급 한 코드에 당신을 가져옵니다 귀하의 선택기가 올바른지 확인하려면 ... – Jeroen

답변

1

Uncaught TypeError: Object [object Object] has no method 'getAttribute'

$(this) 때문에 JQuery와 오브젝트이며 getAttribute()는 DOM 요소를 기대한다. 그냥 시도해보십시오 this

+0

안녕하세요 elclanrs, 그게 IE7에서만 나타납니다 어떤 생각? 다른 브라우저에도 표시되지 않습니까? – jmort253

+0

@elclanrs 안녕하세요, 그것을 시도 할 때, 나는'undefined' 대신에'null'을 얻습니다. DOM 요소로서'this '를'$ this'에 정의 할 수있는 방법이 있습니까? 불행히도 maximage는 ID가있는 요소를 만들지 않습니다. (비록 내가 생각하기에 플러그인 자체를 편집 할 수는 있지만) – waffl

+0

OK - 각 div에 고유 한 ID를 부여하도록 플러그인을 수정했습니다. 그런 다음 jQuery에 다음과 같이 입력합니다. var el = document.getElementById ($ (this) .attr ('id')); \t \t var newTitle = ""+ el.getAttribute ('data-title') + "";'IE를 제외한 다른 모든 브라우저에서 완벽하게 작동합니다. IE는 이제''null '이 null이거나 객체가 아닌 오류를 던집니다!' Argg IE, 왜 저를 조롱합니까? 참고로, 여기에 문제가있는 페이지는 [여기]입니다 (http://www.sloeberlin.com/collection) – waffl

0

데이터 속성을 버튼으로 설정하고 JQuery에서 검색하는 것과 비슷한 문제가있었습니다.

http://www.rqna.net/qna/kvtryn-jquery-ie7-variable-is-undefined-works-in-chrome-safari-firefox.html

하는 것이 필요 할 때 :

내가 다음에 내 옆에이 문제를 해결 : "개체 [개체 개체]있는 방법 '의 getAttribute'가 없습니다 catch되지 않은 형식 오류"나는 점점 유지

<input type="button" class="btn" data-passengerMode="@item.PassengerMode"/> 

이 나를 위해 작동합니다

$('#btn_0').get(0).getAttribute('data-passengerMode') 

또는이

document.getElementById('btn_0') 

당신이 당신의 동적 로딩을 시도 할 수 있다면 희망이 도움이 : 나는 HTML 방식을 사용하지 않은 모든 때문에

$('#btn_0')[0].getAttribute('data-passengerMode') 

.

관련 문제