2012-02-26 104 views
1

我正在使用Jquery获取输入值,因为输入的数字在其中输入。以及根据输入的数字在带有raphaeljs的div #canvas_container上绘制圆圈。目前我正在尝试设置一个最大输入值,如if (value <= 50) {,其中value是用户的输入。使用if语句设置输入字段的最大值

我最终想要实现的是如果用户键入30,绘制30个圆圈。如果用户输入60或任何值50和50以上的圆圈绘制。创建绘制到canvas_container的最大数量的圆。现在我只是试图在输入任何值为50或更高的值时不会发生任何事情,但是一些圈子被绘制但只有少数几个,我不知道为什么。

http://jsfiddle.net/anderskitson/sHNHe/9/

var paper = new Raphael(document.getElementById('canvas_container'), 500, 500); 
$("input").keyup(function() { 
    var value = $(this).val(); 

    if (value <= 50) { 

    if (value === "") { 
     var circle = paper.circle(110, 50, 30); 
     var clear = paper.clear(); 
    } else { 

     for (i = 0; i <= value; i++) { 

      var randomNumber1 = Math.floor(Math.random() * 201) - 100; 
      var randomNumber2 = Math.floor(Math.random() * 201) - 100; 

      var plusOrMinus = Math.random() < 0.5 ? -1 : 100; 

      var circle = paper.circle(randomNumber1, randomNumber2, 20); 
     } 
    } 

    }else { 
     //this should run if a value of 50 or above is entered 
     } 

}).keyup(); 

回答

2

据我所看到的,你有两个错误:

  1. 你需要清除每个KEYUP你的论文,否则新的社交圈将被添加到()
  2. 如果value> 50有点复杂,您可以处理

让我们来解决这个问题(在一个简化版本):

var paper = new Raphael(25, 25, 500, 500); 
$("input").keyup(function() { 
    var value = parseInt($(this).val()); 
    paper.clear(); 

    if (value > 50) { 
     value = 50; 
    } 

    for (i = 0; i < value; i++) { 

     var randomNumber1 = 50 + 5 * i; 
     var randomNumber2 = 50 + 5 * i; 

     var circle = paper.circle(randomNumber1, randomNumber2, 20); 
    } 
});​ 

看一看在Fiddle,我希望这是你想要达到的目标。

+0

如果我在你的例子中输入ax值超过50,我会得到x个圈数,无论我输入的是多少个数字,我都只能得到50个。 – 2012-02-26 18:06:38

+0

不在我的浏览器中,它停在50 ... – Thorsten 2012-02-26 19:25:03

+0

哦你的权利,我没有注意。我一直认为它在增加,但它保持不变。感谢您为我简化这一点。 – 2012-02-26 20:26:59