TypeError:$(...)为null - 如何使用noconflict()

时间:2013-07-25 08:25:48

标签: javascript

我得到错误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()

中包装它

2 个答案:

答案 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

答案 1 :(得分:0)

我修好了。我确实错过了元素。我把它放在正确的方向上。