将元素ID传递给Javascript函数

时间:2013-06-25 08:04:42

标签: javascript html

我见过许多与我的问题标题相关的主题。

这是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.id传递给myFunc函数,或者其他问题。

有什么问题?

任何帮助都将不胜感激。

5 个答案:

答案 0 :(得分:9)

在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按钮使用。

答案 1 :(得分:6)

选中此项:http://jsfiddle.net/h7kRt/1/

你应该在左上方的jsfiddle中更改为No-wrap in <head>

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

答案 2 :(得分:3)

这个工作:

<!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>

答案 3 :(得分:2)

你可以使用它。

<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>

答案 4 :(得分:0)

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

这有效:

validateSelectizeDropdown('#PartCondition')

这不是:

validateSelectizeDropdown("#PartCondition")

功能:

    function validateSelectizeDropdown(name) {
    if ($(name).val() === "") {
         //do something
    }
}