2015-01-11 2 views
0

onse 버튼 메서드를 통해 JS 함수를 excecute 한 후에. 내 사이트가 새로 고쳐지고 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) 모든 것이 시작으로 거슬러 올라갑니다, expacting을 내 안에 번호를 써야 겠어. 가능하다면 2 + 3 + 4 = 9를 거기에 머물고 싶습니다. 감사합니다

+3

'form'에서'button'을 클릭하면 기본적으로 양식이 제출됩니다. 제출을 막기 위해'type = "button"속성을 태그에 추가하십시오. – Teemu

+0

@ Teemu 양식 안에 숫자가있을 때 "확인"을 누르면 아무 일도 일어나지 않습니다. 폼이 비어 있으면 함수는 트로프가됩니다. – user3617642

+0

type 속성을 추가 했습니까? 그렇다면 이것은 완전히 새로운 질문입니다. 변수 이름을 영어로 번역하는 것을 고려해보십시오. 실제로 변수가 보유하고있는 것이 무엇인지 실마리가 없으면 코드를 읽는 것이 정말 어렵습니다. – Teemu

답변

4

변경 :

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

에 : @Teemu처럼

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

말했다 < 버튼> 양식 요소를 제출합니다.

+0

Teemu와 당신 덕분에 작동합니다. 그러나 "Enter"키를 눌러도 아무 일도 일어나지 않습니다. 버튼을 클릭하면 소리가납니다. 이상합니다. 거기에 어쨌든 해결할 수 있습니까? – user3617642

+0

시도 : 확인> 다른 입력 필드에 tabindex = 2를 추가해야 할 수도 있습니다. – ZacWolf

+0

접근성이 좋지 않습니다. 제출 이벤트를 만들기 위해 바인딩하고 Enter 키를 사용하여 키보드 제출을 허용하고 제출 유형 만 그대로 둡니다. – charlietfl

0

<a href 요소의 기본 동작 같은 다른 경우에 유용 할 수 있습니다

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

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

와 자바 스크립트는 event.preventDefault()과 기본 동작을 방지 할 수 있도록 페이지를 리디렉션하는 또 다른 방법


더욱 우수한 solut 이온 - 당신의 버튼이 양식을 제출하자, 그러나 방지 양식의 기본

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

및 자바 스크립트

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

에를 입력하고 입력 필드에 입력으로 양식을 할 때 작동합니다.

관련 문제