2013-08-15 2 views
0

, пожалуйста, помогите найти решение для этого кода, я хочу ограничить одно число, например, 34 в этом генераторе чисел. Когда кто-то генерирует номер с щелчком кнопки, никогда не совпадает с ограниченным числом, например 34 :) СпасибоКак ограничить один номер в 1-100 auto generate JavaScript

jsfiddle example

function IsNumeric(n){ 
    return !isNaN(n); 
} 

$(function(){ 

    $("#getit").click(function() { 

     var numLow = $("#lownumber").val(); 
     var numHigh = $("#highnumber").val(); 

     var adjustedHigh = (parseFloat(numHigh) - parseFloat(numLow)) + 1; 

     var numRand = Math.floor(Math.random()*adjustedHigh) + parseFloat(numLow); 

     if ((IsNumeric(numLow)) && (IsNumeric(numHigh)) && (parseFloat(numLow) <= parseFloat(numHigh)) && (numLow != '') && (numHigh != '')) { 
      $("#randomnumber").text(numRand); 
     } else { 
      $("#randomnumber").text("Careful now..."); 
     } 

     return false; 
    }); 

    $("input[type=text]").each(function(){ 
     $(this).data("first-click", true); 
    }); 

    $("input[type=text]").focus(function(){ 

     if ($(this).data("first-click")) { 
      $(this).val(""); 
      $(this).data("first-click", false); 
      $(this).css("color", "black"); 
     } 

    }); 

}); 

И HTML

<div id="page-wrap"> 

    <img src="images/randomnumb.png" alt="get a random number between..." /> 

    <input type="text" id="lownumber" value="1" /> 
    and 
    <input type="text" id="highnumber" value="100" /> 

    <br /> 

    <button id="getit">Generate!</button> 

    <div id="randomnumber"></div> 

</div> 

ответ

1

Добавить условную проверку, чтобы убедиться, генерируемыми число не является ограниченным числом:

var numRand = 0, restrictedNumber = 34;  
do { 
    numRand = Math.floor(Math.random()*adjustedHigh) + parseFloat(numLow); 
} while (numRand == restrictedNumber); 

http://jsfiddle.net/JHhDx/

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

+0

Ou Спасибо так много ... Это именно то, что я хотел ... Спасибо :))) – Lasha

+0

Это, безусловно, приятный и лаконичный ответ :) – chucknelson

0

Кроме петли, вы можете также сделать рекурсивную функцию.

http://jsfiddle.net/chucknelson/eYAy6/2/

var userRestrictedNum = 34; //could get this from input  

function getit(restrictedNum) { 
     ...random number code... 

     if(numRand != restrictedNum) { 
      return numRand; 
     } 
     else { 
      return getit(restrictedNum); 
     } 
    } 

    $("#getit").click(function() { 
     $("#randomnumber").text(getit(userRestrictedNum)); 
    }); 
+0

Да это довольно хороший ответ слишком ... спасибо ... – Lasha

+0

У меня есть один вопрос, есть способ, этот сгенерированный номер будет значение? – Lasha

+0

Если вы сохраняете произвольное числовое значение в функции, просто установите значение ввода как возвращаемое значение (например, $ ('# myinput'). Val (getit (limitedNum));). – chucknelson