Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не выводит alert 
V
    Опции темы
zzdxw
Дата 11.11.2017, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 6.10.2014

Репутация: нет
Всего: нет



Всем привет!
Помогите разобраться. При нажатии на BUTTON функция должна выводить сообщение в случае, если инпуты не заполнены (не работает). Если заполнены, то выводит результат вычислений в другие инпуты (работает). В чем ошибка?
Код

function proizv() {
    "use strict";
    var a1 = parseInt(document.getElementById('a1').value, 10),
        a2 = parseInt(document.getElementById('a2').value, 10),
        b1 = parseInt(document.getElementById('b1').value, 10),
        b2 = parseInt(document.getElementById('b2').value, 10),
        c1 = parseInt(document.getElementById('c1').value, 10),
        c2 = parseInt(document.getElementById('c2').value, 10),
        x = a1 * b1 + a1 * b2,
        z = b1 * c1 + b2 * c2,
        y = a1 * c1 + a2 * c2;
    
    if(a1.value != '' && a2.value != '' && b1.value != '' && b2.value != '' && c1.value != '' && c2.value != '')
        {
            document.getElementById('ab').value = x;
            document.getElementById('bc').value = z;
            document.getElementById('ca').value = y;
        } else {
            alert('Задайте координаты');
        }
}

PM MAIL   Вверх
whatisnot
Дата 12.11.2017, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 14.12.2014

Репутация: нет
Всего: 2



a1 ... c2, это числа (при удаче, и это надо учитывать), а не DOM объекты и у них нет свойства value. И проверять нужно числа, а не на пустую строку:

 if(a1 && a2 && b1 && b2 && c1 && c2) ....

Это сообщение отредактировал(а) whatisnot - 12.11.2017, 13:23
PM MAIL   Вверх
zzdxw
Дата 12.11.2017, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 6.10.2014

Репутация: нет
Всего: нет



whatisnot, всё оказалось проще. Возможно я дал мало информации. а1...с2 это числа, которые я ввожу в инпуты.
Разобрался. ParseInt возвращает NaN, и проверять надо было на NaN.
Рабочий код.
Код

function cos() {
    "use strict";
    var a1 = parseInt(document.getElementById('a1').value, 10),
        a2 = parseInt(document.getElementById('a2').value, 10),
        b1 = parseInt(document.getElementById('b1').value, 10),
        b2 = parseInt(document.getElementById('b2').value, 10),
        c1 = parseInt(document.getElementById('c1').value, 10),
        c2 = parseInt(document.getElementById('c2').value, 10),
        x = a1 * b1 + a1 * b2,
        z = b1 * c1 + b2 * c2,
        y = a1 * c1 + a2 * c2;
    
    if ((isNaN(a1) === true) || (isNaN(a2) === true) || (isNaN(b1) === true) || (isNaN(b2) === true) || (isNaN(c1) === true) || (isNaN(c2) === true))
        {
            alert('Задайте координаты');
        } else {
            document.getElementById('ab').value = x;
            document.getElementById('bc').value = z;
            document.getElementById('ca').value = y;
        }
}


Это сообщение отредактировал(а) zzdxw - 12.11.2017, 14:31
PM MAIL   Вверх
whatisnot
Дата 12.11.2017, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 14.12.2014

Репутация: нет
Всего: 2



Цитата(zzdxw @  12.11.2017,  14:30 Найти цитируемый пост)
ParseInt возвращает NaN, и проверять надо было на NaN.


Какая чушь.
PM MAIL   Вверх
zzdxw
Дата 12.11.2017, 20:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 6.10.2014

Репутация: нет
Всего: нет



whatisnot, тем не менее, так заработало всё. 
И ещё ошибся с логическим оператором &&. Надо было ||. Но это не играет роли, при всех пустых инпутах алерт не выводился.

Это сообщение отредактировал(а) zzdxw - 12.11.2017, 21:11
PM MAIL   Вверх
whatisnot
Дата 12.11.2017, 23:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 14.12.2014

Репутация: нет
Всего: 2



Цитата(zzdxw @  12.11.2017,  20:54 Найти цитируемый пост)
тем не менее, так заработало всё. 
Надо было ||. Но это не играет роли, при всех пустых инпутах алерт не выводился.


Надо было как раз ИЛИ.

onkeyup="this.value=this.value.replace(/\D/,'')"

Значения получать можно так: +obj.value или obj.valueAsNumber в современных браузерах.

https://developer.mozilla.org/ru/docs/Web/J...l_Objects/isNaN


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1163 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.