Определить, больше число или нет

#javascript #syntax #comparison

#javascript #синтаксис #сравнение

Вопрос:

Я хочу проверить, является ли параметр запроса больше 12 или нет JavaScript.

Он всегда выдает предупреждение «меньше», даже когда я меняю значение q на 12.

Текущий URL-адрес: www.test.com?id=2

Как это можно сделать в JavaScript?

Комментарии:

1. Что вы имеете в виду, что оно всегда возвращает false? Вы ничего не возвращаете, вы alert вводите текст.

2. Ваш заголовок и вопрос противоположны. Один запрашивает больше, другой запрашивает меньше. Ваш код проверяет, больше ли q 10.

3. Ваш код выглядит так, как будто он должен работать для меня. Какие проблемы вы видите?

4. В чем здесь проблема? jsfiddle.net/pfQ9D

5. Сопротивляясь желанию опубликовать решение jQuery только для лулзов…

Ответ №1:

Ваш код работает. Если оно возвращает true, то оно предупреждает о большем. Хотя вы должны добавлять точки с запятой в конце инструкций. Ваш код будет выглядеть следующим образом:

 var q = 14;
if (q > 10)
    alert('greater');
else
    alert('Lesser');
  

Рабочая демонстрация

Как сказал Дерек, если q === 10, то это будет означать «Меньше», потому что 10 не больше 10.

РЕДАКТИРОВАТЬ: здесь у вас есть 2 варианта. Либо используйте что-то вроде PHP, чтобы сделать q равным числу, подобному этому:

 q = <?php echo $_GET['id']; ?>
  

Обратите внимание, что использование этого откроет ваш сайт для всех видов XSS, поэтому, если вы решите пойти этим путем, узнайте немного о безопасности и не спешите загружать его на живой веб-сайт.

Или, если вы хотите сделать это только с помощью JavaScript, сделайте это следующим образом:

 q = location.href.substring(location.href.indexOf('id=') 3); //3 is the length of id=
q = parseInt(q, 10); //With substring, you get a string, so you have to parse it
  

10 является параметром основы, что позволяет избежать получения странных чисел для входных данных, таких как 010 (было бы 8 без параметра).

Комментарии:

1. @Amaan. Я получаю значение q из параметров запроса.

Ответ №2:

Для меня это выглядит нормально. Возможно, вы захотите включить точки с запятой после предупреждений, чтобы быть в безопасности. Кроме того, ваш тест не учитывает значение «равно», поэтому 10 сообщит «меньше», когда на самом деле оно равно.