簡體   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