2 回答

TA貢獻(xiàn)1891條經(jīng)驗 獲得超3個贊
是的,絕對可以。
您出錯的地方是您過早地分配了輸入的值。
讓我們來看看。
var name= document.getElementById("name").value;
var mail= document.getElementById("mail").value;
var pass= document.getElementById("pass").value;
當(dāng)瀏覽器解析您的代碼時,它會立即為變量分配輸入值,并且此時它包含空值。
您此時只想像這樣引用輸入元素。
var userName= document.getElementById("name"); // note we change the variable from name to userName hence we cannot uses "name" as a variable
var mail= document.getElementById("mail");
var pass= document.getElementById("pass");
并獲取 register() 函數(shù)中元素的值。
嘗試查看整個代碼:
const students = [];
let userName = document.getElementById('name')
let mail = document.getElementById('mail')
let pass = document.getElementById('pass')
function register() {
let user = { name: userName.value, email_id: mail.value, pass: pass.value };
console.log(user);
students.push(user);
}
function show() {
setTimeout(function () {
let text = '';
for (const student of students) {
text = `Name=${student.name}, Email=${student.email_id}, Password=${student.pass} <br>`
}
document.getElementById("view").innerHTML = text;
}, 2000);
}

TA貢獻(xiàn)1873條經(jīng)驗 獲得超9個贊
問題是您在頁面加載時獲取輸入值,而不是在單擊“注冊”按鈕時獲取輸入值。
所以將這些行移動到Register函數(shù)中。
我必須提到,JSON.parse在自建字符串上使用是一種反模式。您應(yīng)該使用普通的舊對象文字。
不太重要,但通常的做法是對變量使用駝峰命名法,并為構(gòu)造函數(shù)/類保留 PascalCase。所以重命名User為user. 這同樣適用于屬性,但我讓它們保持原樣,因為它會影響您的其他代碼:
var Register = function() {
var name= document.getElementById("name").value;
var mail= document.getElementById("mail").value;
var pass= document.getElementById("pass").value;
let user= { "NAME": name, "EMAIL_ID": mail, "PASSWORD": pass };
console.log(user);
student.push(user);
}
添加回答
舉報