Javascript - 未捕获的ReferenceError - 代码似乎很完美?

时间:2014-01-14 21:08:13

标签: javascript defined

以下是我如何调用我的JS:

<a href="javascript:void(0)" class="FCChatControl" onClick="toggleChatControl('cwa#item.OwnerID#')"></a>

“#item.OwnerID#”是包含ID的循环中的变量。所以我想要改变CSS的元素应该是:“cwa123”或者id的其他一些数字......

这是我的JS:

$(document).ready(function() {
    function toggleChatControl(id){
        var wnd = document.getElementById(id);
        if (wnd.style.marginBottom == '-1px') {
            wnd.style.marginBottom = '-236px';              
        } else {
            wnd.style.marginBottom = '-1px';
        }
    }
});

我没有线索,它给了我“未定义”错误......

1 个答案:

答案 0 :(得分:4)

超出范围,删除文档就绪包装

function toggleChatControl(id){
    var wnd = document.getElementById(id);
    if (wnd.style.marginBottom == '-1px') {
        wnd.style.marginBottom = '-236px';              
    } else {
        wnd.style.marginBottom = '-1px';
    }
}

每个函数都创建一个新范围,全局范围是window,这就是用于内联javascript的范围。

$(document).ready(function() { ... });内部,范围被更改(到document),因此该函数超出了内联处理程序的范围。

更好的方法是使用适当的事件处理程序

$('.FCChatControl').on('click', function() {
    toggleChatControl('cwa#item.OwnerID#');
});