Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Значение переменной выводится на экран через раз (https://javascript.ru/forum/dom-window/72350-znachenie-peremennojj-vyvoditsya-na-ehkran-cherez-raz.html)

Limboos 23.01.2018 13:57

Значение переменной выводится на экран через раз
 
Здравствуйте уважаемые форумчане. Помогите нубу. Решил написать небольшой калькулятор. Когда нажимаю на кнопку "Посчитать" результат то выводится, то появится на мгновение и исчезнет, причем закономерность выявить мне не удалось.

<!doctype html> 
<html>
<head>
<script src="calk.js" defer></script>
</head>




<body>
<form>
  <p><b>Калькулятор банкротства физического лица</b></p>
  
  <fieldset>
    <legend>Пожалуйста ответьте на несколько вопросов</legend>
      
      <label for="dolg">Укажите общую примерную задолженность</label>
      <select name="dolg" id="dolg">
        <option value="1">менее 1 000 000</option>
        <option value="2">1 000 000 - 5 000 000</option>
		<option value="3">5 000 000 - 10 000 000</option>
        <option value="4">более 10 000 000</option>
	  </select>
	  <br>
	  <label for="kred">Укажите количество кредиторов (1 - 10) </label>
	  <input type="number" id="kred" name="kred" min="1" max="10" value="1">
  
    <hr>
    <label for="mug"><input id="mug" type="checkbox" value="1">Вы женаты / замужем?</label><br>
    <label for="ipo"><input id="ipo" type="checkbox" value="1">У Вас есть квартира, обремененная ипотекой?</label><br>
    <label for="kva"><input id="kva" type="checkbox" value="1">У Вас есть объекты недвижимости кроме единственного жилья?</label><br>
    <label for="imu"><input id="imu" type="checkbox" value="1">У Вас есть другое зарегистрированное имущество (авто, гаражи, земля и т.п.)?</label><br>
    <label for="doh"><input id="doh" type="checkbox" value="1">Ваш официальный доход превышает прожиточный минимум?</label>
  </fieldset>
  <button onclick="calk()">Посчитать</button>
  <hr>
  <p id="out"></p>
  <p></p>
</form>


</body>
</html>


var rezult=10000;

function calk () {

var a = parseInt(document.getElementById('kred').value);

var b = document.getElementById("dolg").value;
rezult=rezult+(a*1000)-1000;

if (b == 1) {
	rezult=rezult;
}

if (b == 2) {
	rezult=rezult+1000;
}

if (b == 3) {
	rezult=rezult+2000;
}

if (b == 4) {
	rezult=rezult+3000;
}

  
	 
document.getElementById('out').innerHTML = '<b>Стоимость процедуры составит: '+rezult+'</b>';

	
}

Nexus 23.01.2018 14:06

Тэгу "button" добавьте атрибут "type" со значением "button".
Эту лапшу:
if (b == 1) {
    rezult=rezult;
}
 
if (b == 2) {
    rezult=rezult+1000;
}
 
if (b == 3) {
    rezult=rezult+2000;
}
 
if (b == 4) {
    rezult=rezult+3000;
}

можно заменить этим:
rezult+=(+b-1)*1000;

Limboos 23.01.2018 14:59

Спасибо Вам огромное. И главное вроде все делал, как на ютуде рассказывают. :) А лапша это еще не доделано, просто тестировал. Там скорее всего будет не пропорциональное увеличение.

ksa 23.01.2018 15:50

Цитата:

Сообщение от Limboos
причем закономерность выявить мне не удалось

Закономерность тут одна - единственная кнопка на форме, без типизации, воспринимается как submit-кнопка.
При нажатии происходит отправка формы.

Dilettante_Pro 23.01.2018 16:01

Limboos,
Цитата:

Сообщение от Limboos
Там скорее всего будет не пропорциональное увеличение

Тогда использовать b как индекс массива значений

Limboos 23.01.2018 17:20

Да, трудно юристу учиться программированию :)
Может подскажете, как, например, из этой строки:

<label for="ipo"><input id="ipo" type="checkbox" value="1">У Вас есть квартира, обремененная ипотекой?</label>

вытянуть информацию о том поставлен флажок или нет?

Nexus 23.01.2018 17:27

if(document.getElementById('ipo').checked)
    alert('Флажок отмечен');

Dilettante_Pro 23.01.2018 17:31

Пример, правда, вырван из общего контекста задачи...

<label for="ipo"><input id="ipo" type="checkbox" value="1">У Вас есть квартира, обремененная ипотекой?</label>
<button id="test">Проверить чекбокс</button>
<script>
document.querySelector("#test").onclick = function() {
      if(document.querySelector("#ipo").checked) {alert("Есть флажок")}
      else { alert("Нет флажка")} 
}
</script>

Dilettante_Pro 23.01.2018 17:32

Nexus,
Медленно пишу...

Nexus 23.01.2018 17:35

Dilettante_Pro, у вас полноценный пример, у меня строка кода :)


Часовой пояс GMT +3, время: 03:27.