2012-06-12 172 views
0

我根据其他人的建议重写了我昨天提交的代码。我现在有这个,但仍然似乎无法得到它比大于小于。我可以添加/减去2个数字并获得有效答案。然而,我无法使用> <。希望有人可以提供一些额外的帮助,将其保留在“If语句”格式中。Javascript大于或小于

if ((input.search("what is greater")!= -1) && (input.search(/\d{1,10}/)!=-1) && (input.search(/\d{1,10}/)!=-1)) 
{var numbersInString = input.match(/\d+/g); 
var num1 = parseInt(numbersInString[0], 10); 
var num2 = parseInt(numbersInString[1], 10); 
if (num1 < num2) document.result.result.value = ""+num1+" is less than "+num2+""; 
if (num1 > num2) document.result.result.value = ""+num1+" is greater than "+num2+""; 
if (num1 = num2) document.result.result.value = "Both numbers are equal"; 
return true;} 
+0

你如何分成单词;第一个条件已经成立? – Bergi

+5

你在if语句后面加了一个分号,使它们或多或少无用 – albin

+0

我会重新思考整个逻辑 - 尽量保持DOM管理和逻辑分离,否则随着时间的推移会变得非常复杂(否则会让事情变得更加简单调试);) – Peter

回答

0

这听起来像你想操纵两种方式号码:

1)你想指的是单个字符。

2)你想比较号码与另一个号码,看看是否大于另一个。

如果您有一个名为input的字符串,则可以使用函数​​将其从字符串转换为该字符串表示的数字。

如果您只想得到前两个字符,您可以使用substring函数。

要记住的重要一点是,在计算机中,字符串'12345'和数字12345是完全不同的。计算机有一组完全不同的操作,它将在每个操作上执行。

此外,@albin是正确的指出在您的if语句后加分号是错误的。

+0

基于CarlesAndres建议的更改 是不是我在做什么? –

0

匹配方法的输出是一个字符串数组,所以我认为你不是比较数字而是字符串。在比较你的号码之前试着做这个。

var num1 = parseInt(numbersInString[0], 10); 
var num2 = parseInt(numbersInString[1], 10); 

然后比较num1和num2。

+0

@ CarlesAndres 尝试下面它对我有意义,但仍然没有去。 (input.search(“what is more”)!= -1)&&(input.search(/ \ d {1,10} /)!= - 1)&&(input.search(/ \ d { 1)}} {= 1)){ var numbersInString = input.match(/ \ d +/g); var num1 = parseInt(numbersInString [0],10); var num2 = parseInt(numbersInString [1],10); if(num1 num2) document.result.result。value =“”+ num1 +“大于”+ num2 +“”; (num1 = num2) document.result.result.value =“两个数字相等”; 返回true;} –

+0

您应该调试。为什么不将numericInString输出到控制台,并设置一个断点来检查赋值后的值?我建议你花一些时间学习如何在浏览器中做到这一点。如果你不使用谷歌浏览器,试试吧,关于你的谷歌浏览器的信息有很多。 – CarlesAndres

0

http://jsfiddle.net/qt3RW/ 简单的输入框:

<input id="input1" value="Is 6 greater than 5"></input> 

解析器发现 '是比##更大',其中#是数字,并提醒该位:

var IsStringValid = $("#input1").val().match(/Is \d greater than \d/g); 
alert(IsStringValid); 
if(IsStringValid){ 
    var values = $("#input1").val().match(/\d/g); 
    for(var i = 0; i < values.length; i++){ 
     alert(values[i]) 
    } 
}