标题几乎说明了一切。
我正在制作一个表格,它将使用div class = "well" 在引号中返回您的名字和姓氏和城市。我现在被困了几个小时,试图弄清楚我做错了什么。
<script> /* get info from inputs and add it to a quote. */
function FillInfo(){
var fname = document.forms ["SIgnUpForm"] ["fname"].value;
var sname = document.forms ["SIgnUpForm"] ["sname"].value;
var city = document.forms ["SIgnUpForm"] ["city"].value;
document.getElementById("info").innerHTML = "Thank you" + " " + fname + " " + sname + "from" + " " + city + "." + " " + "You are now being considered as our next adventurer. Good luck!";
}
</script>
在身体是:
<div class="heading2">
<div class="container2">
<p>Do you want to travel troughout space? Then fill out our form!</p><br>
<form name="SignUpForm" onsubmit="return validateForm()" method="get">
<input type="text" name="fname" placeholder="First name" required><br>
<input type="text" name="sname" placeholder="Last name" required><br>
<input type="text" name="city" placeholder="City" required><br><br>
<div id="info" class="well"></div>
<button class="otherpage" onclick="FillInfo();">Submit</button><br><br>
<a href="Mainpage.html" class="BeginLink">Return</a>
</form>
</div>
</div>
我希望它在我单击提交按钮时写下报价,但作为回报,我得到这个:
未捕获的类型错误:无法读取未定义的属性"fname" 在FillInfo(我输入名称,城市的内容( 在HTMLButtonElement.onclick(我输入名称,城市的内容(
我想你只是输入了错误的表单名称
您的 HTML 代码:注册表单
您的Javascript代码:SIgnUpForm
我修复了它,它对我有用。
我用formData
来获取一个form
对象,然后form.get(name)
来获取内容。
这是一种更优雅的获取内容的方式。
我还用input type="button"
替换了您的button
,因为它会导致页面刷新。
注意:它不适用于iOS的IE和Safari
function FillInfo(){
let f = new FormData(document.querySelector('form'));
var fname = f.get("fname");
var sname = f.get("sname");
var city = f.get("city");
document.getElementById("info").innerHTML = "Thank you" + " " + fname + " " + sname + " from " + " " + city + "." + " " + "You are now being considered as our next adventurer. Good luck!";
}
<div class="heading2">
<div class="container2">
<p>Do you want to travel troughout space? Then fill out our form!</p><br>
<form name="SignUpForm" method="get">
<input type="text" name="fname" placeholder="First name" required><br>
<input type="text" name="sname" placeholder="Last name" required><br>
<input type="text" name="city" placeholder="City" required><br><br>
<div id="info" class="well"></div>
<input type="button" class="otherpage" onclick="FillInfo();" value="Submit" /><br><br>
<a href="Mainpage.html" class="BeginLink">Return</a>
</form>
</div>
</div>
为什么?这些问题不断出现,关于访问DOM
时 JavaScript 中的undefined
错误。在访问之前,请确保DOM
已准备就绪。仅仅将脚本放在html之后并不能保证这一点。
虽然"SIgnUpForm"名称会给你错误并在这里得到纠正,但它并不能解决整个问题。如果在访问 html 文档中的元素之前未确保文档对象模型 (DOM( 已准备就绪,则不同的处理器和网络速度以及浏览器机制可能会导致出现undefined
属性错误。
<script> /* get info from inputs and add it to a quote. */
window.onload = function () {
function FillInfo(){
var fname = document.forms ["SignUpForm"] ["fname"].value;
var sname = document.forms ["SignUpForm"] ["sname"].value;
var city = document.forms ["SignUpForm"] ["city"].value;
document.getElementById("info").innerHTML = "Thank you" + " " + fname + " " + sname + "from" + " " + city + "." + " " + "You are now being considered as our next adventurer. Good luck!";
}
});
</script>
此外,请考虑使用 jQuery 的 $(document).ready()
方法实现跨浏览器兼容性。
我只是修改代码,它适用于所有浏览器:
<script> /* get info from inputs and add it to a quote. */
function FillInfo(){
let form = document.querySelector('form');
var fname = form.elements["fname"];
var sname = form.elements["sname"];
var city = form.elements["city"];
document.getElementById("info").innerHTML = "Thank you" + " " + fname.value + " " + sname.value + " from " + " " + city.value + "." + " " + "You are now being considered as our next adventurer. Good luck!";
return false;
}
</script>
<div class="heading2">
<div class="container2">
<p>Do you want to travel troughout space? Then fill out our form!</p><br>
<form name="SignUpForm" onsubmit="return validateForm()" method="get">
<input type="text" name="fname" placeholder="First name" required><br>
<input type="text" name="sname" placeholder="Last name" required><br>
<input type="text" name="city" placeholder="City" required><br><br>
<div id="info" class="well"></div>
<button class="otherpage" type="button" onclick="FillInfo();">Submit</button><br><br>
<a href="Mainpage.html" class="BeginLink">Return</a>
</form>
</div>
</div>