[英]How to get form input value on button click in Vanilla JavaScript?
[英]How to get value of dynamic input in vanilla JavaScript?
我正在通過執行 ajax 請求從 php 加載帶有動態隱藏輸入的動態標頭。 輸入創建得很好。 問題不在這里。 在同一頁面下方,我使用普通的 javascript 來獲取該動態輸入的值。 Ajax 和 javascript 是兩種不同的代碼。 如果不是,我會簡單地從 ajax 成功加載,但我不能在這里這樣做。
問題是,在控制台中我收到此錯誤:
類型錯誤:document.getElementById(...) 為空
我怎樣才能解決這個問題?
隱藏輸入
<input id="appStatus" type="hidden" value="0">
javascript
window.onload = function() {
var app_mode = document.getElementById('appStatus').value;
if (app_mode === 0) {//dev
var stripe = Stripe('pk_test_xxxx');
} else {//live prod
var stripe = Stripe('pk_live_xxxx');
}
};
在 ajax 請求生成輸入字段之前,您正在調用 document.getElementById('appStatus').value。
為此使用 Promise
function getInput() {
return new Promise((resolve, reject) => {
$.ajax({
...,
success: function(response) {
resolve(response);
},
error: function() {
reject();
}
});
});
}
window.onload = function() {
getInput().then(response => {
var app_mode = document.getElementById('appStatus').value;
if (app_mode === 0) {//dev
var stripe = Stripe('pk_test_xxxx');
} else {//live prod
var stripe = Stripe('pk_live_xxxx');
})
}
將setTimeout
函數視為success
函數
添加事件DOMNodeInserted
在文檔中插入新元素時,將自動調用函數
document.body.addEventListener("DOMNodeInserted",function() { var app_mode = document.getElementById('appStatus'); if(!app_mode) return; console.log(app_mode.value); }); setTimeout(()=>{ document.querySelector("div").innerHTML = '<input id="appStatus" type="text" value="0">'; },3000);
<div></div>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.