2 回答

TA貢獻(xiàn)1891條經(jīng)驗(yàn) 獲得超3個(gè)贊
是的,絕對(duì)可以。
您出錯(cuò)的地方是您過(guò)早地分配了輸入的值。
讓我們來(lái)看看。
var name= document.getElementById("name").value;
var mail= document.getElementById("mail").value;
var pass= document.getElementById("pass").value;
當(dāng)瀏覽器解析您的代碼時(shí),它會(huì)立即為變量分配輸入值,并且此時(shí)它包含空值。
您此時(shí)只想像這樣引用輸入元素。
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ù)中元素的值。
嘗試查看整個(gè)代碼:
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)驗(yàn) 獲得超9個(gè)贊
問(wèn)題是您在頁(yè)面加載時(shí)獲取輸入值,而不是在單擊“注冊(cè)”按鈕時(shí)獲取輸入值。
所以將這些行移動(dòng)到Register函數(shù)中。
我必須提到,JSON.parse在自建字符串上使用是一種反模式。您應(yīng)該使用普通的舊對(duì)象文字。
不太重要,但通常的做法是對(duì)變量使用駝峰命名法,并為構(gòu)造函數(shù)/類保留 PascalCase。所以重命名User為user. 這同樣適用于屬性,但我讓它們保持原樣,因?yàn)樗鼤?huì)影響您的其他代碼:
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);
}
添加回答
舉報(bào)