【发布时间】:2021-03-08 03:11:54
【问题描述】:
我目前正在尝试从表单中捕获输入数据并将该数据存储到一个对象数组中,然后这些对象可以汇总控制台中捕获的数据。最重要的是,我正在尝试按照我的分配说明使用传统的 DOM 事件处理程序运行该函数来存储该数据。
JS 的最终目标是使用 var t 通过 ID 'contactSubButton' 获取提交按钮的元素并运行函数contactInfo onsubmit...
但是,无论我尝试什么,我都会在控制台中的“t.addEventListener”行中收到此消息......
Uncaught TypeError: Cannot read property 'addEventListener' of null
var t = document.getElementById("contactSubButton");
t.addEventListener('click', contactInfo());
function contactInfo(fName, lName, email, country, subject) {
fName = document.getElementById('fname').value;
lName = document.getElementById('lname').value;
email = document.getElementById('email').value;
country = document.getElementById('country').value;
subject = document.getElementById('subject').value;
for (i = 0;; i++) {
var subInfo = [fName, lName, email, country, subject]
}
console.log('Your submission details are:' < br > 'First Name: ' + fName)
}
<div id="form">
<form>
<label for="fname">First Name</label>
<input type="text" id="fname" name="firstname" placeholder="Your first name...">
<label for="lname">Last Name</label>
<input type="text" id="lname" name="lastname" placeholder="Your last name....">
<label for="email">Email Address</label>
<input type="email" id="email" name="email" placeholder="Please enter your email...">
<label for="country">Country</label>
<select id="country" name="country">
<option value="usa">United States</option>
<option value="canada">Canada</option>
<option value="mexico">Mexico</option>
</select>
<label for="subject">Subject</label>
<textarea id="subject" name="subject" placeholder="How can we help?"></textarea>
<input type="submit" value="Submit" id="contactSubButton">
<input type="reset" value="Reset Form">
</form>
</div>
【问题讨论】:
-
在找到元素之前必须确保 DOM 已经加载
-
还有一个永远不会结束的循环
for (i = 0;; i++) { -
你也在这里传递不必要的变量
contactInfo(fName, lName, email, country, subject) { -
您也错误地分配了事件侦听器。你需要
t.addEventListener('click', contactInfo);没有() -
循环也没什么用
var subInfo = [fName, lName, email, country, subject]
标签: javascript html arrays forms