2009-09-09 4 views
1

이것은 새 사이트의 템플릿에 맞는 것, 그래서 내가 약간을좌절 문제는

http://sandbox.leigeber.com/slideshow/

내가 다진 한을 구현하도록 요청하고 변경 한 갤러리입니다 시스템을 좀 더 쉽게 사용할 수 있습니다. 나는 그것을 실행할 때마다

,이 라인은 ta가 null 없다는 오류를

ta=document.getElementById(thumbid); 

됩니다. thumbid var의 값이 정렬되지 않은 목록의 ID로 존재한다는 것을 알고 있습니다.

나는 지금 적어도 30 분 동안 무슨 일이 일어나고 있었는지 파악하려고 노력해 왔으며 그것을 못살게 보일 수 없습니다!

누군가 내가 잘못하고있는 것을 말해 줄 수 있습니까?

+0

내가 얻는 오류는't = ta.getElementsByTagName ('li');' – nickf

답변

2

코드가 잘 보이고 Firebug 콘솔에서 같은 줄을 실행하면 OK가 실행되므로 실행시 실제로 thumbs 요소가 있는지 궁금합니다. document.ready- 스타일 처리기에 있습니까? 해당 페이지에 요소가 있기 전에 호출중인 경우 ta은 null이되어 해당 오류가 발생합니다.

0

그것은이 있어야 어떤 값을 thumbid 조금 불분명하지만 문제는 당신의 순서가없는 목록에서 리 항목이 id들 필요가 없다는 것입니다처럼 나에게 보이는, 그들은 value의가 있습니다.

document.getElementById('thumbs')을 호출하면 목록 자체의 ul 요소가 올바르게 작동합니다.

0

Safari 4 라인 19에서 nullta에 관한 유형 오류가 발생했습니다.
이것은 ta이 (가) 어디에 지정되었는지 알려주는 라인 때문입니다.

저는 클로저에서 함수를 캡슐화하는 방법을 좋아하지만, window.onload을 더 많은 것으로 변경할 수 있다고 생각합니다. jQuery like; 동일은 실제로 selecting the elements을 찾고 있다고 말할 수 있습니다. t=$('ul#thumbs li')과 같은 것이 트릭을 수행해야합니다. varta 앞에 던지면 아무 것도 고칠 수 없지만 한 번해볼 가치가 있습니다.

+0

입니다.하지만 jQuery 선택기를 사용하면 원시 JS 메서드가 jQuery 객체에서 작동할까요? 나는 그렇게 믿지 않는다. ... – alex

2

슬라이드 쇼 기능이 너무 일찍 초기화에 호출 된 것처럼 보입니다. DOM 트리가 준비되기 전에 호출됩니다.

var slideshow = function() { 
... 
}(); 

끝에서 that()을 제거해보십시오.

+0

나는 이것이 정확하다고 생각한다. 가장 쉬운 해결책은 스크립트 참조를 페이지 맨 아래로 옮기고 그대로 두는 것입니다. 어쨌든 초기 페이지 로딩 시간도 향상됩니다. –

+0

아아 함수 실행 중 괄호를 놓쳤습니다! – alex

+0

+1 도움이되는 답변 – alex

2

좋은 소식! jQuery는 바닐라 자바 ​​스크립트로 작성되었습니다! ID로 요소를 가져 오는 메소드를 복사하여 사용할 수 있어야합니다.