JS:$(document).ready(xx)中的函数不起作用

时间:2018-03-20 13:04:13

标签: javascript

我想在$(document).ready(xx)块中实现一个函数。

看起来应该是这样但不起作用:

$(document).ready(function () {
    function navTo(target) {
        if (target === 'into.html') {
            window.location.href = 'into.html';
        }
        else if (target === 'index.html') {
            window.location.href = 'index.html';
        }
    }

    window.init = changeColor();

    function changeColor() {
        document.getElementById("url").style.color = "#000000";
    }
});

如果我喜欢这样,那就有效:

$(document).ready(function () {

    window.init = changeColor();

    function changeColor() {
        document.getElementById("url").style.color = "#000000";
    }
});


function navTo(target) {
    if (target === 'into.html') {
        window.location.href = 'into.html';
    }
    else if (target === 'index.html') {
        window.location.href = 'index.html';
    }
}

我的相关HTML代码:

<a onClick="navTo('into.html')">click</a>

1 个答案:

答案 0 :(得分:1)

这种情况正在发生,因为当您设置onclick时它的范围将尝试在您的全局范围内找到该函数,因为您在文档就绪函数中定义它将无法运行并被设置为undefined来解决它您可以声明它作为一个全局函数(你已经这样做了),或者你可以声明一个jQuery事件......

$(document).ready(function () {
    $('.link').click(function(){
       if ($(this).attr('target') === 'into.html') {
            window.location.href = 'into.html';
        }
        else if ($(this).attr('target') === 'index.html') {
            window.location.href = 'index.html';
        }
    }); 

    window.init = changeColor();

    function changeColor() {
        document.getElementById("url").style.color = "#000000";
    }
});

HTML

<a class="link" target="into.html">click</a>