@Speakea1y1289

Почему установленная переменная с document.getElementById().innerHTML сама исполняется без её вызова?

Добрый день. Имеется следующий код:
<div class="pb-10 col-md-12">
     <a id="inner_area"></a>
     <label>Внутреняя площадь дома, м2</label>
     <input type="number" value="" maxlength="100" class="form-control" name="inner_area" onblur="isright(this);">
</div>

function isright(obj)
	{
		var value= +obj.value.replace(/\D/g,'')||0;
		var notify= document.getElementById("inner_area").innerHTML="Дома рассчитываются индивидуально!<br>";
		if (document.getElementById('num_floors').value==2) {
			if (value>300) { value=300; }
			if (value<120) { value=120; }
		} else {
			if (value>300) { value=300; }
			if (value<90) { value=90; }
		}
		obj.value = value;
	}


При исполнении данного кода. Переменная notify автоматически исполняется, а надо, чтобы notify исполнялось только в условиях с value. Как это сделать?
Должно быть так:
if (document.getElementById('num_floors').value==2) {
			if (value>300) { notify; value=300; }
			if (value<120) { notify; value=120; }
		} else {
			if (value>300) { notify; value=300; }
			if (value<90) { notify; value=90; }
		}
  • Вопрос задан
  • 131 просмотр
Пригласить эксперта
Ответы на вопрос 1
@gribanov2la
Full stack web разработчик
В javascript нет понятия "переменная автоматически исполняется".

То, что вы записываете в переменную notify - это значение свойства innerHTML dom элемента.

В вашем случае необходимо сделать функцию (и ссылку на функцию уже можно записать в переменную). Если не обращать внимание на ужасно написанный код (уж извините), то можно сделать вот так:

function isright (obj) {
  var value = +obj.value.replace(/\D/g, '') || 0
  var notify = function () {
    document.getElementById('inner_area').innerHTML = 'Дома рассчитываются индивидуально!<br>'
  }
  if (document.getElementById('num_floors').value == 2) {
    if (value > 300) { notify(); value = 300 }
    if (value < 120) { notify(); value = 120 }
  } else {
    if (value > 300) { notify(); value = 300 }
    if (value < 90) { notify(); value = 90 }
  }
  obj.value = value
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы