[英]Adding innerHTML positioned before the existing HTML in Javascript
[英]Javascript function prints .innerHTML but HTML only appears for a moment before vanishing
我有一个按钮,它调用名为“submit()”的 javascript 函数。 在该函数中,我只需编写 document.getElementById('try').innerHTML="it working"; 测试我的按钮是否将数据传递给函数。
问题是“它有效”在消失之前打印了大约半秒。
我制作了一个完整的表单,使用相同的 html 页面将处理后的数据完美地打印到网页上。 唯一的区别是我更改了表单的结构并将函数移到了 .js 文件中。
虽然现在,即使我在 .js 文件中注释掉 submit() 函数并将该函数粘贴到核心 html 文件中,也会发生同样的事情。 我可以粘贴在表格上方或下方,结果相同。
这是我的 HTML:
<div class="formsection">
<button type="Submit" onclick="Submit()">Submit</button>
</div>
</form>
</div>
<div id="output">
<p> Try this: <span id="try"></span></p>
</div>
这是我的javascript函数:
<script type="text/javascript">
function Submit(){
document.getElementById("try").innerHTML="It worked";
}
</script>
您正在使用提交按钮来测试您的代码,它执行 JS 代码并提交表单。
如果您不想提交表单,请在 submit() 中使用 return false
<script type="text/javascript">
function Submit(){
document.getElementById("try").innerHTML="It worked";
return false;
}
</script>
并在 html 中再次使用 return
<button type="Submit" onclick="return Submit()">Submit</button>
在 javascript 中,当任何事件处理程序返回 false 时会停止事件执行。
您遇到的问题是由于您的标记,主要是这块:
<button type="Submit" onclick="Submit()">Submit</button>
您已指定按钮应在单击时执行表单提交,因此 javascript 会触发、更改文本并重新加载页面(发生回发)。
为了解决这个问题,您实施以下更改之一:
<input type="button" onclick="Submit()">Submit</input>
event.preventDefault();
MDN 链接
您的表单已提交,这就是为什么您只看到“它有效”一秒钟(如果有的话)。
您的功能不会阻止表单提交。
您可以使用表单的onsubmit
属性来指定将在表单提交之前调用的函数,并且可以通过返回布尔值来决定何时允许或不允许
你的表单实际上被提交了:) 使用这个:
<button type="Submit" onclick="Submit(); return false;">Submit</button>
我没有看到FORM
标签,但如果您执行以下操作:
<form action="javascript:" onsubmit="Submit()">
您的函数Submit
将被调用,仅此而已。 使用input type="submit"
的好处是您的用户可以通过按Enter
提交表单,而不必自己管理它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.