javascript函数后页面刷新

时间:2015-01-11 19:39:15

标签: javascript html innerhtml

在我通过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 以下是浏览器视图:

example

按下“V redu”后(OK)一切都回到开头,告诉我在里面写一个数字。如果有可能,我希望2 + 3 + 4 = 9留在那里?感谢

2 个答案:

答案 0 :(得分:4)

变化:

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

为:

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

像@Teemu所说,&lt;按钮&gt;将提交表格元素。

答案 1 :(得分:0)

另一种解决方案

<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();
    ...

并且在输入字段中使用回车提交表单时它将起作用。