使用带有可变参数的警报?

时间:2014-02-16 03:20:41

标签: javascript html

我想将Mystring用作警报的参数,因此当鼠标在链接上时,它会提醒Mystring

<html>
<head>
    <script>
    window.onload = initAll;

    function initAll() {
        var Mystring = "Hello world";
        var aTag = document.getElementsByTagName('a')[0];
        aTag.onmouseover = runAlert;
    }

    function runAlert() {
        alert(Mystring);
    }
    </script>
</head>
<body>
    <a href="#">Over me</a>
</body>
</html>

2 个答案:

答案 0 :(得分:3)

您的Mystring变量的范围是initAll函数。在该功能之外不可用。您可能想要做的是在外部定义并在initAll中分配值,如下所示:

window.onload = initAll;
var myString;

function runAlert() {
    alert(myString);
}

function initAll() {
    myString = "Hello world";
    var aTag = document.getElementsByTagName('a')[0];
    aTag.onmouseover = runAlert;
}

如果你要这么做,你可以定义一个内联匿名函数,比如这个

    aTag.onmouseover = function() {
        alert(myString);
    };

注意:通常,JavaScript变量以camelCase约定命名。

注1:在调用函数之前定义被调用函数总是一个好习惯,就像我在答案中所示。

答案 1 :(得分:1)

如果您想保留示波器并避免全局污染,可以为警报功能分配参数:

function initAll() {
    var Mystring = "Hello world";
    var aTag = document.getElementsByTagName('a')[0];
    aTag.onmouseover = function(){runAlert(Mystring)};
}

function runAlert(str) {
    alert(str);
}

见这里:http://jsfiddle.net/VZ69x/