0

我收到错误 TypeError: $(...) is 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() 中

4

2 回答 2

2

这里没有冲突。

您正在使用 Prototype 的美元函数,它返回对 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
于 2013-07-25T08:31:39.193 回答
0

我修好了它。我确实错过了这个元素。感谢您让我朝着正确的方向前进。

于 2013-07-25T15:42:00.067 回答