提交按钮警报框错误.如何识别错误并修复代码
Submit button alert box bug. How do I identify the bug and fix the code?
HELP!我需要知道这个代码会弹出一个警告框,但提交按钮不会弹出!错误是什么?如何在不完全更改所有错误的情况下修复代码?谢谢
<!DOCTYPE html>
<html>
<head>
<title>Dougie's Script</title>
<script>
var textinput;
function submitHandler(e){
alert("You entered " + textinput.value + "'n");
e.preventDefault();
}
textinput=document.getElementById("textfield");
var form = document.getElementById("theform");
form.addEventListener("submit", submitHandler, false);
</script>
</head>
<body>
<form id="theform" action="#">
<label>Enter text here...</label>
<input id="textfield" type="text" >
<input type="submit" value="Submit" >
</form>
</body>
</html>
将其移动到结束表单标记下方:
<script type="text/javascript">
textinput=document.getElementById("textfield");
var form = document.getElementById("theform");
form.addEventListener("submit", submitHandler, false);
</script>
将<script>
标签移动到<body>
:的底部
</form>
<script>...</script>
</body>
现在,您的脚本正在尝试查找尚未创建的元素。另一种选择是侦听document
的DOMContentLoaded
事件,但这不是跨浏览器的。
尝试将脚本标记移动到正文的最底部。通过这种方式,脚本将在文档加载后执行(然后您的元素应该是"可获取的"answers"可连接的侦听器"。)
问题是在运行javascript时,页面的元素尚未加载。因此,document.getElementById("textfield")
不返回元素,也没有任何事件与之绑定
尝试将javascript代码的事件处理封装如下:
var textfield;
function submitHandler(e) { ... }
// When the window loads, run this function.
window.onload = function() {
textfield = document.getElementById("textfield");
var form = document.getElementById("theform");
form.addEventListener("submit", submitHandler, false);
}
这将确保事件在加载后绑定到元素。
记住要把事情放在范围内;每次调用函数时都会动态获取文本输入,以便在响应中保持值的更新。此外,在尝试访问HTML树中的元素之前,请确保加载了DOM。由于您使用的是addEventListener
,因此以下是脚本的工作版本:
<!DOCTYPE html>
<html>
<head>
<title>Dougie's Script</title>
<script>
(function(d){
var init = function(){
var form = d.getElementById("theform"), submitHandler = function(e){
var textinput = d.getElementById("textfield");
alert("You entered " + textinput.value + "'n");
e.preventDefault();
};
form.addEventListener("submit", submitHandler, false);
};
d.addEventListener("DOMContentLoaded", init, false);
})(document);
</script>
</head>
<body>
<form id="theform" action="#">
<label for="textfield">Enter text here...</label>
<input id="textfield" type="text" >
<input type="submit" value="Submit" >
</form>
</body>
</html>
相关文章:
- 错误:语法错误,无法识别的表达式:不支持的伪:无效/RectJS/Unit Testing
- 未捕获错误:语法错误,无法识别的表达式:input[@type=submit]
- jQuery选择器错误:无法识别的表达式
- Angular JS/Rube-on-Rails-控制器未识别错误
- jquery 1.8.0语法错误,无法识别的表达式:>
- Jslint 无法识别错误排序函数的选项
- 如何修复 jQuery 1.8“语法错误,无法识别的表达式”错误
- 错误:错误:语法错误,无法识别的表达式:
- 属性选择器不起作用(语法错误、无法识别的表达式)
- HTML 无法识别我要求它运行的 javascript 文件,语法错误:意外的令牌“<”(匿名函数)script.js:
- 如何识别AngularJS中的错误[cdep]
- jQuery:语法错误,无法识别的表达式:.Marketing&通讯
- 识别以下代码中的错误
- 未捕获错误:语法错误,无法识别的表达式:ajaxsample/update_agenda(CodeIgniter)
- Aptana插件用于eclipse错误识别和自动完成
- 无法识别错误回调
- 是否可以在函数构造函数中识别哪个对象调用它,并在错误的对象调用时中止创建
- Jquery语法错误,id选择器上的表达式无法识别
- 未捕获错误:语法错误,无法识别表达式Jquery选择器单引号与双引号
- Javascript:语法错误,无法识别的表达式: