[英]My JavaScript code is not working locally, but works fine on jsfiddle, why?
我创建了一些JavaScript代码,将代码提交到标签中。 这是代码:
<script type="text/javascript">
var myForm = document.forms['myForm'];
var formSubmit = document.getElementById('formSubmit');
formSubmit.onclick = function(){
myForm.submit();
}
</script>
<form name="myForm" action="http://msn.com" method="post">
</form>
<div id="formSubmit"><button>Click me</button></div>
当我在http://jsfiddle.net/HrCxz/上尝试此代码时,它工作正常。 但是,当我将此代码添加到HTML文件中并运行页面时,它不起作用。 代码有什么问题? 请解决此问题,在此先感谢。
在小提琴中,您的代码在onload
处理程序中运行。 这是默认选项,但是左侧面板允许您更改它。 如果将其更改为在<head>
运行,则小提琴也不起作用: http : //jsfiddle.net/HrCxz/1/
您需要添加自己的onload
处理程序,或将脚本块移动到它尝试操作的元素之后。 脚本块按照浏览器从上到下解析页面时发现的顺序执行。 任何给定脚本块中的JS都只能操作已解析的元素,即看起来更接近源开头的元素,除非您将代码放入从onload
事件(或从准备用于浏览器的文档)中onload
的事件处理程序中支持它,或者如果您使用提供它的库或自己编写代码)。
JSFiddle正在使用onload
事件。
第1步:
通过将JS移动到<form>
标记下方来尝试此操作,
<form name="myForm" action="http://msn.com" method="post">
</form>
<div id="formSubmit"><button>Click me</button></div>
<script type="text/javascript">
var myForm = document.forms['myForm'];
var formSubmit = document.getElementById('formSubmit');
formSubmit.onclick = function(){
myForm.submit();
}
</script>
第2步:
或者,您可以像这样附加onload
事件,
<script type='text/javascript'>//<![CDATA[
window.addEvent('load', function() {
var myForm = document.forms['myForm'];
var formSubmit = document.getElementById('formSubmit');
formSubmit.onclick = function(){
myForm.submit();
}
});//]]>
</script>
<form name="myForm" action="http://msn.com" method="post">
</form>
<div id="formSubmit"><button>Click me</button></div>
您在div元素上调用click函数,是否需要在按钮上执行此操作? var formSubmit = document.getElementById('BUTTONIDHERE');
您的代码示例不起作用,因为在浏览器有机会加载DOM元素之前正在处理JavaScript。 有必要将JavaScipt代码段放在结束body标签之前(以便在加载DOM元素之后进行处理),或者使用“ on load”或“ on ready”事件处理程序来检测何时加载DOM。然后触发您的Javascript。
这是三个有关在加载DOM元素后如何触发JavaScript的示例:
1)如果您使用的是jQuery,请将您的Javascript粘贴到$(document).ready()事件处理程序中:
$(document).ready(function() {
// Handler for .ready() called.
var myForm = document.forms['myForm'];
var formSubmit = document.getElementById('formSubmit');
formSubmit.onclick = function(){
myForm.submit();
}
});
2)您可以对文档“就绪”使用jQuery的替代语法:
$(function() {
// Handler for .ready() called.
var myForm = document.forms['myForm'];
var formSubmit = document.getElementById('formSubmit');
formSubmit.onclick = function(){
myForm.submit();
}
});
2)将您的JavaScript添加到绑定到窗口“ load”事件的回调函数中-这也是一个事件处理程序:
window.addEvent('load', function() {
var myForm = document.forms['myForm'];
var formSubmit = document.getElementById('formSubmit');
formSubmit.onclick = function(){
myForm.submit();
}
})
干杯!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.