簡體   English   中英

使用onchange事件未在頭中定義JavaScript函數

[英]JavaScript function is not defined in head using onchange event

我想選擇一個用戶名並在選擇該名稱后打印一些內容。 但是,為什么未定義“ load_new_content()”?

<html>
<head>
<title>Profile Editor</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js">
$(document).ready(function() {
   $("#selectedUserId").change(load_new_content());
 });

function load_new_content() {
    alert("hello");
 }

 </script>
 </head>
 <body>

 <?php
 error_reporting(-1);
 require('Db.php');

 $db = new Db();
 // var_dump($db);
 $userIds = $db -> getUserIds();
 echo '<select name="selectedUserId" id="selectedUserId" onchange="load_new_content()">';
 echo '<option value="">Choose your CEC User Id</option>';
 foreach($userIds as $ID) {
    echo "<option>".$ID["user_id"]."</option>";
    // echo $userId["user_id"];
    // echo $ID['user_id'];
 }
 echo '</select>';

 ?>

<script>標簽聲明錯誤。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script> <!-- Need this close tag -->

<script> <!-- Need a Open tag -->

$(document).ready(function() {
   $("#selectedUserId").change(load_new_content());
 });

function load_new_content() {
    alert("hello");
 }

 </script>

這可以通過load_new_content的調用包裝在一個函數中來解決:

$("#selectedUserId").change(function(){ load_new_content(); });

另外,您不會關閉調用jQuery的<script>標記,也不會為后續代碼打開新的<script>標記。 嘗試:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
<script>
$(document).ready(function() {
   $("#selectedUserId").change(load_new_content());
});
function load_new_content() {
   alert("hello");
}
</script>

兩個問題。 其他人指出的第一個,您的內聯JavaScript需要一個單獨的腳本標簽。

其次,你不能只是做

$("#selectedUserId").change(load_new_content());

頁面加載后,這將僅執行一次功能。

您需要這樣做:

$("#selectedUserId").change(function() { load_new_content() });

(注意另一個函數中的函數調用)

或這個:

$("#selectedUserId").change(load_new_content);

(請注意沒有括號)

暫無
暫無

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

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