简体   繁体   English

JavaScript功能后页面刷新

[英]Page refreshes after javascript function

After I excecute my JS function over onClick button method. 在通过onClick按钮方法执行我的JS函数之后。 My site refreshes and everything that was writen with innerHTML is erased. 我的网站将刷新,用innerHTML编写的所有内容都将被删除。 I think i'm missing something. 我想我缺少了一些东西。 I will just put the whole JS function here. 我将把整个JS函数放在这里。 I probably don't understand something and that's what is causing it. 我可能不了解某些东西,这就是造成它的原因。

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: HTML Here is the browser view: 这是浏览器视图:

例

After i press "V redu" (OK) Everything goes back to the start, expacting me to write a number inside. 当我按“ V redu”(确定)后,一切又回到了开始,指示我在里面写一个数字。 I want the 2+3+4=9 to stay there if that is possible? 我希望2 + 3 + 4 = 9留在那里吗? Thanks 谢谢

Change: 更改:

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

to: 至:

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

Like @Teemu said, < button > will submit a form element. 就像@Teemu所说的那样,<button>将提交一个表单元素。

Another solution 另一种解决方案

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

and in javascript 和在JavaScript

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

This can be useful in other cases, like default behavior of <a href element is to redirect page, so you can prevent default behavior with event.preventDefault() 这在其他情况下很有用,例如<a href元素的默认行为是重定向页面,因此您可以使用event.preventDefault()防止默认行为。


even better solution - let your button submit form, but prevent default on form submit 更好的解决方案-让您的按钮提交表单,但阻止表单提交时的默认设置

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

and in javascript 和在JavaScript

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

and it will work when submitting form with Enter in input field. 当在输入字段中输入Enter提交表单时,它将起作用。

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

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