2015-01-11 2 views
0

После того, как я прерву свою функцию JS по методу кнопки onClick. Мой сайт обновляется, и все, что было написано с помощью innerHTML, стирается. Я думаю, что я что-то упустил. Я просто поставлю здесь всю функцию JS. Я, вероятно, ничего не понимаю, и это вызывает его.Страница обновляется после функции javascript

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 Ред" (OK) Все возвращается к началу, expacting мне написать номер внутри. Я хочу, чтобы 2 + 3 + 4 = 9 оставались там, если это возможно? Благодаря

+3

Нажатие кнопки '' в форме 'формы' отправляет форму по умолчанию. Добавьте атрибут 'type =" '' к тегу для предотвращения отправки. – Teemu

+0

@Teemu Если я нажму «ОК», когда в форме есть числа, ничего не происходит. Если форма пуста, функция переходит в корыто. – user3617642

+0

После того, как вы добавили атрибут type? Если это так, то это совершенно новый вопрос. Пожалуйста, подумайте также, чтобы перевести имена переменных на английский, действительно трудно прочитать код, когда вы не знаете, какие переменные на самом деле предназначены для хранения. – Teemu

ответ

4

Изменение:

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

к:

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

Как @Teemu сказал < кнопка> представит элемент формы.

+0

Это работает, благодаря Теэму и вам. Но если я нажимаю «Ввод», ничего не происходит, я должен буквально нажимать на кнопку, это странно. Есть ли способ исправить это? – user3617642

+0

try: OK> вам может потребоваться добавить tabindex = 2 в другое поле ввода. – ZacWolf

+0

нет хорошая практика доступности. Привязать для создания события отправки и разрешить ввод клавиатуры с помощью клавиши ввода и оставить только тип отправки – charlietfl

0

Другое решение

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

и JavaScript

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

Это может быть полезным и в других случаях, например, поведение <a href элемента по умолчанию для перенаправления страницы, так что вы можете предотвратить поведение по умолчанию с event.preventDefault()


еще лучше solut ион - пусть ваша кнопка отправить форму, но предотвратить дефолт по форме представить

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

и в JavaScript

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

и он будет работать при подаче формы с Enter в поле ввода.

Смежные вопросы