2013-07-25 3 views
0

오류가 발생합니다. TypeError : $ (...)이 null입니다.

<script> 
$('w_pages').observe('change', function(){ 
    parent.preview.location = 'W/preview/<?=$page['parent_id'] ?>/?p='+$('w_pages').value; 
}); 
$('w_layout').observe('click', function(){ 
    parent.preview.Tiny.showURL('S/layout/'+$('w_pages').value+'?ajax=true',true) 
}); 
</script> 

나는 그것이 충돌 때문에 읽었다. 어떻게 이것을 noConflict()에 랩핑합니까?

+1

설명서에서 봤습니까? http://api.jquery.com/jQuery.noConflict/ – Mangiucugna

+1

이것이 jQuery가 아니라 [Prototype] (http://prototypejs.org/doc/latest/dom/dollar/index.html)임을 알 수 있습니까? – Jon

+0

@Jon 음 ... 라이브러리 태그가 없습니다. 당신은 단지 추측 할 수 있습니다. 하지만, jQuery는 적합하지 않습니다. –

답변

0

나는 그것을 고쳤다. 나는 정말로 요소가 빠져 있었다. 나를 올바른 방향으로 인도 해준 고맙습니다.

2

여기에는 충돌이 없습니다.

Prototype의 dollar function을 사용하고 있습니다. id는 인수와 동일한 요소에 대한 참조를 반환합니다. 페이지에 해당 요소가 없으면 null을 반환하며 이는 TypeError를 발생시킵니다.

나는 이유 이러한 요소가 페이지에 존재하지 않거나 방법을 좋아한다 그것은해야 JS 작업을 모르겠어요하지만 당신은 그것에 메소드를 호출하기 전에 반환 값을 확인하여 즉시 오류를 방지 할 수 있습니다

var wPages = $('w_pages'); 
if (wPages) { 
    wPages.observe('change', function(){ 
     parent.preview.location = 
      'W/preview/<?=$page['parent_id'] ?>/?p='+wPages.value; 
    }); 
} 

// The same for w_layout 
+0

OP가'observe' 메쏘드가있는 다른 프레임 워크가 아닌 Prototype을 사용하고 있습니까? –

+0

@JanDvorak : 달러 함수가 id,'null' 결과 및'observe'와 함께 사용되면 저에게 Prototype과 비슷하게 보입니다. 내가 알지 못하는 프레임 워크의 가능성을 배제 할 수는 없지만이 상황에서 무엇을합니까? – Jon

+0

설명을 요청하거나 (합리적으로 확신한다면) 가정을 가정합니다 ("프로토 타입을 사용한다고 가정 할 경우 \ n \ n") .-) +1 anyways –

관련 문제