[英]Why I can't get input value in my javascript code
我無法獲取所選ID的值。
這是html和javascript
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <input id="input"> <button id="button" type="button" name="button">Search</button> <script> const der = document.getElementById('input').value; document.getElementById('button').addEventListener('click', function() { alert(der); }); </script> </body> </html>
我在Chrome,Opera和Firefox上進行了測試。 沒事 我也用var
代替了const
,那也行不通。
我想獲取我選擇的ID的輸入值。 我真的看不到代碼中的任何問題
const der = document.getElementById('input').value;
這是你的問題。 在將任何內容寫入其中之前,您正在獲取輸入字段的值。 嘗試這樣做:
document.getElementById('button').addEventListener('click',
function() {
const der = document.getElementById('input').value;
alert(der);
});
您需要將分配轉移到der
到點擊處理程序中。 目前,在頁面加載時(而不是在單擊按鈕時)評估der
。
document.getElementById('button').addEventListener('click',
function(){
const der = document.getElementById('input').value;
alert(der);
});
首次運行代碼時設置der
,並指定空值。 單擊按鈕時將其重置。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <input id="input"> <button id="button" type="button" name="button">Search</button> <script> document.getElementById('button').addEventListener('click', function() { const der = document.getElementById('input').value; alert(der); }); </script> </body> </html>
您的問題是您的代碼在頁面加載后立即運行。 由於頁面加載時為空,因此變量為空(您可以通過在控制台中鍵入der
進行驗證,這不是錯誤,但不是值)。
您可以通過將變量分配信息移到該函數中來對其進行修復,以便它檢查何時准備就緒。
您的腳本不起作用,因為您需要在填寫輸入字段之前從輸入字段中獲取該值,然后在單擊該按鈕時警告該值,而不是當前值。
解決方案是將獲取值的行移到單擊按鈕時調用的回調函數中:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <input id="input"> <button id="button" type="button" name="button">Search</button> <script> document.getElementById('button').addEventListener('click', function() { const der = document.getElementById('input').value; alert(der); }); </script> </body> </html>
試試這個代碼
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <input id="input" type="text"> <button id="button" type="button" name="button">Search</button> <script> document.getElementById('button').addEventListener('click', function() { alert(document.getElementById('input').value); }); </script> </body> </html>
在與表單輸入進行任何交互之前,腳本執行后,代碼將立即存儲輸入的值。 一種解決方案是將對輸入的引用存儲在const der
,然后在click事件中調用der.value
。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <input id="input"> <button id="button" type="button" name="button">Search</button> <script> const der = document.getElementById('input'); document.getElementById('button').addEventListener('click', function() { alert(der.value); }); </script> </body> </html>
使用DOM時,您希望從輸入字段中獲取價值。 該按鈕只是您捕獲事件的方式。 這就是為什么我們使用事件監聽器。 觸發事件后,程序便會根據您告訴它的檢索值知道檢索值。
因此,您應該這樣重寫事件:
document.getElementById('button').addEventListener('click',
function() {
let der = document.getElementById('input').value;
//Now you can call some async code here to "play" with this value
});
注意:我使用let
是因為我看不到使用const
的原因,如果此值將根據用戶的輸入而變化。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.