21

我已经看到许多与我的问题标题相关的主题。

这是 HTML 代码:

<button id="button1" class="MetroBtn" onClick="myFunc(this.id);">Btn1</button>
<button id="button2" class="MetroBtn" onClick="myFunc(this.id);">Btn2</button>
<button id="button3" class="MetroBtn" onClick="myFunc(this.id);">Btn3</button>
<button id="button4" class="MetroBtn" onClick="myFunc(this.id);">Btn4</button>

这里有一个非常简单的 JS 函数:

function myFunc(id){
        alert(id);
}

您可以在JsFiddle中看到。

问题是 :

我不知道,也许没有传递this.idmyFunc函数,或者其他一些问题。

有什么问题 ?

任何帮助,将不胜感激。

4

5 回答 5

14

这会起作用:

<!DOCTYPE HTML>
<html>
    <head>
        <script type="text/javascript">
            function myFunc(id)
            {
                alert(id);
            }
        </script>
    </head>

    <body>
        <button id="button1" class="MetroBtn" onClick="myFunc(this.id);">Btn1</button>
        <button id="button2" class="MetroBtn" onClick="myFunc(this.id);">Btn2</button>
        <button id="button3" class="MetroBtn" onClick="myFunc(this.id);">Btn3</button>
        <button id="button4" class="MetroBtn" onClick="myFunc(this.id);">Btn4</button>
    </body>
</html>
于 2013-06-25T08:11:56.763 回答
10

默认情况下,在 jsFiddle 中,您在脚本块中键入的代码被包装在 window.onload 上执行的函数中:

<script type='text/javascript'>//<![CDATA[ 
    window.onload = function () {
        function myFunc(id){
            alert(id);     
        }
    }
//]]>  
</script>

因此,您的函数myFunc不在全局范围内,因此对您的 html 按钮不可用。通过将选项更改No-wrap in <head>为 Sergio 建议您的代码未包装:

<script type='text/javascript'>//<![CDATA[ 
    function myFunc(id){
       alert(id);     
    }
//]]>  
</script>

因此该函数在全局范围内,可用于您的 html 按钮。

于 2013-06-25T08:10:16.127 回答
8

你可以用这个。

<html>
    <head>
        <title>Demo</title>
        <script>
            function passBtnID(id) {
                alert("You Pressed:  " + id);
            }
        </script>
    </head>
    <body>
        <button id="mybtn1" onclick="passBtnID('mybtn1')">Press me</button><br><br>
        <button id="mybtn2" onclick="passBtnID('mybtn2')">Press me</button>
    </body>
</html>
于 2017-11-29T05:54:42.920 回答
7

检查这个:http: //jsfiddle.net/h7kRt/1/

您应该将左上角的 jsfiddle 更改为No-wrap in <head>

您的代码看起来不错,并且可以在普通页面中运行。在 jsfiddle 中,您的函数是在负载处理程序中定义的,因此处于不同的范围内。通过更改为 No-wrap,您可以在全局范围内使用它,并且可以根据需要使用它。

于 2013-06-25T08:06:26.577 回答
0

对我来说,问题很简单,只是不太了解 Javascript。当我应该使用单引号时,我试图使用双引号传递 id 的名称。它工作得很好。

这有效:

validateSelectizeDropdown('#PartCondition')

这没有:

validateSelectizeDropdown("#PartCondition")

和功能:

    function validateSelectizeDropdown(name) {
    if ($(name).val() === "") {
         //do something
    }
}
于 2016-11-07T15:17:15.450 回答