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

最佳答案

这里没有冲突。

您正在使用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

关于javascript - TypeError:$(…)为空-如何使用noconflict(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17852771/

10-09 23:53