2014-09-01 2 views
0

Оператор > не работает правильно для меня!Оператор ">" не работает правильно

var message = document.getElementById("success"); 
message.innerHTML = startNumber + ">" + endNumber; 
document.getElementById("mes").innerHTML = startNumber > endNumber; 

вход1: startNumber = 45, endNumber = 1
////// выход1: 45> 1 истинно

вход2: startNumber = 45, endNumber = 5
/// ///// output2: 45> 5 ложные


обновление (моя декларация переменной перед/после) Спасибо :)

<!--Before--> 
     <form> 
      <input type="text" id="start_field" placeholder="start of"> 
      <input type="text" id="end_field" placeholder="end at"> 
      <input type="button" id="startbtn" value="Start"> 
     </form> 

var startPage =document.getElementById("start_field").value; 
var endPage = document.getElementById("end_field").value; 

<!--After--> 
     <form> 
      <input type="text" id="start_field" placeholder="start of"> 
      <input type="text" id="end_field" placeholder="end at"> 
      <input type="button" id="startbtn" value="Start"> 
     </form> 

var startPage =new Number(document.getElementById("start_field").value); 
var endPage = new Number(document.getElementById("end_field").value); 
+7

Ваши входы строки или числа ? Что такое 'typeof startNumber' и' typeof endNumber'? –

+1

Покажите нам, как вы объявляете свои переменные, предоставляете больше контекста. – Nit

+1

На практике очевидное открытие, что фундаментальная языковая функция сильно нарушается, редко оказывается подлинной. – Pointy

ответ

5

Вы работаете со строками, а не цифрами. Строка «45» не больше строки «5».

Вы можете заставить струны быть истолкованы численно, если вы хотите:

document.getElementById("mes").innerHTML = +startNumber > +endNumber; 
+0

«Вы работаете со строками, а не цифрами». - Где «startNumber» и «endNumber» рассматриваются как строки? –

+0

@ PaulD.Waite они не обрабатываются * как строки; по умозаключению, однако ясно, что в коде в OP они * являются * строками. (Ну, я думаю, что они рассматриваются как строки с помощью '>', но опять же это потому, что '>' понимает, что строки должны сравниваться лексикографически.) – Pointy

+0

, которые объясняли бы поведение. –

2

попробовать

document.getElementById("mes").innerHTML = parseInt(startNumber) > parseInt(endNumber); 

заставить численное сравнение (АОТ сравнения строк)

+0

Имейте в виду, что [желательно указать парсинг базы 10 при использовании 'parseInt()'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt) - т.е. 'parseInt (startNumber, 10)'. –

+0

Я считаю ** не **, давая radix много желаемой функции, он позволяет использовать '0xff <256' –

+0

Конечно, но в некоторых реализациях он также позволяет' 045 <256'. –

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