簡體   English   中英

下拉菜單上的 onchange() 不調用函數

[英]onchange() on dropdown not calling the function

下面是我的 HTML 代碼:

我希望腳本在選擇一個選項時運行。 我認為我寫的代碼是正確的。 console.log() 不會在控制台上打印任何內容,因此這意味着不會調用該函數。 有誰能夠幫助我? 這是非常基本的代碼,但我不知道其中有什么問題。

<div class="form-group required">
    <label for="InputLastName">For how many hours ? <sup>*</sup> </label>
    <select name="serviceHours" id="hours" onchange="getHours(this.value)">
    <option value="" selected>---------</option>
    <option value="1">1 Hour</option>
    <option value="2">2 Hours</option>
    <option value="3">3 Hours</option>
    <option value="4">4 Hours</option>
    <option value="5">5 Hours</option>
    <option value="6">6 Hours</option>
    <option value="7">7 Hours</option>
    <option value="8">8 Hours</option>
    <option value="9">9 Hours</option>
    <option value="10">10 Hours</option>
    <option value="11">11 Hours</option>
    <option value="12">12 Hours</option>
    </select>
    <script type="text/javascript">
        function getHours(value){
            var hours = value;
            console.log(hours+ " hello");
        }
    </script>
</div>

如果我更改函數名稱,控制台不會給出錯誤 undefined functions 或 function not found 。

如果我將 onchange="getHours(this.value)" 替換為 onchange="alert(this.value);" 它也不起作用。

誰能告訴 jquery 這樣做的方式?

你的答案似乎是正確的。

我所做的唯一更改是將 js 分離到另一個文件中,並按照我編寫的方式制作函數。

從:

<script type="text/javascript">
    function getHours(value){
        var hours = value;
        console.log(hours+ " hello");
    }
</script>

到:

var getHours = function (value) {
    var hours = value;
    alert(hours + " hello");
};

這種語法更改不應該有什么不同。

<!DOCTYPE html>
<html lang="en-US">
<head>

    <meta charset="UTF-8">

    <title>
        Exp
    </title>


</head>

<body>

<div class="form-group required">
    <label for="InputLastName">For how many hours ? <sup>*</sup> </label>
    <select name="serviceHours" id="hours" onChange="getHours()">
    <option value="" selected>---------</option>
    <option value="1">1 Hour</option>
    <option value="2">2 Hours</option>
    <option value="3">3 Hours</option>
    <option value="4">4 Hours</option>
    <option value="5">5 Hours</option>
    <option value="6">6 Hours</option>
    <option value="7">7 Hours</option>
    <option value="8">8 Hours</option>
    <option value="9">9 Hours</option>
    <option value="10">10 Hours</option>
    <option value="11">11 Hours</option>
    <option value="12">12 Hours</option>
    </select>



</div>

<script type="text/javascript">
        function getHours(){
            var hours = document.getElementById("hours").value;
            alert(hours);
        }
   </script>

</body>

</html>

上面的代碼以小時數發出警報。 也許這會有所幫助。

終於知道錯誤背后的原因了。 感謝 Chrome INSPECT 在 js 中保留了一些詞。 您不應該在函數中為變量名使用 value,class 之類的名稱。 嘗試將名稱更改為“hijk”之類的名稱,它會起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM