繁体   English   中英

JavaScript功能后页面刷新

[英]Page refreshes after javascript function

在通过onClick按钮方法执行我的JS函数之后。 我的网站将刷新,用innerHTML编写的所有内容都将被删除。 我想我缺少了一些东西。 我将把整个JS函数放在这里。 我可能不了解某些东西,这就是造成它的原因。

function stisk() {
  var stevilo = prompt("Vnesi iskano stevilo");
  var seznam = document.getElementById("vnos").value;
  var pattern = new RegExp("^[0-9](,\s*[0-9])+$");
  var vsota = 0;
  var seznam = seznam.split(',');

  var dolzina = seznam.length;
  var pravilnost = pattern.test(seznam);
  if (pravilnost == true) {
    for (i = 0; i < dolzina; i++) {
      vsota = vsota + parseInt(seznam[i]);
    }
    for (i = 0; i < dolzina - 1; i++) {
      var star = document.getElementById("stevila").innerHTML;
      if (isNaN(seznam[i]) == false) {
        var starejsi = document.getElementById("stevila").innerHTML = star + parseInt(seznam[i]) + "+";
      } else {
        document.getElementById("stevila").innerHTML = "Vnos ni pravilen";
      }
    }
    document.getElementById("stevila").innerHTML = starejsi + seznam[dolzina - 1] + "=" + vsota;
    var c = 0;
    for (i = 0; i < seznam.length; i++) {
      if (stevilo == seznam[i]) {
        c++;
      }
    }
    if (c == 0) {
      alert("stevila ni na seznamu");
    } else {
      alert("Stevilo je na seznamu");
    }
  } else {
    document.getElementById("stevila").innerHTML = "Napacen vnos stevil";
  }
}

HTML: HTML 这是浏览器视图:

例

当我按“ V redu”(确定)后,一切又回到了开始,指示我在里面写一个数字。 我希望2 + 3 + 4 = 9留在那里吗? 谢谢

更改:

<button onclick="stisk()">OK</button>

至:

<input type="button" onclick="stisk()">OK</input>

就像@Teemu所说的那样,<button>将提交一个表单元素。

另一种解决方案

<button onclick="stisk(event)">OK</button>

和在JavaScript

function stisk(e){
    e.preventDefault();
    ...

这在其他情况下很有用,例如<a href元素的默认行为是重定向页面,因此您可以使用event.preventDefault()防止默认行为。


更好的解决方案-让您的按钮提交表单,但阻止表单提交时的默认设置

<form onsubmit="stisk(e)">
    ...
    <button type="submit">

和在JavaScript

function stisk(e){
    e.preventDefault();
    ...

当在输入字段中输入Enter提交表单时,它将起作用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM