2013-03-22 1 views
2

Я работаю над очень простым приложением JavaScript FizzBuzz с использованием Rails, но я не могу получить форму и ее кнопки. Я знаю, что это очень грубый код, а некоторые из них в HTML и JavaScript в отличие от Ruby, потому что я больше знаком с бывшими двумя, чем с последними.jQuery кнопки для приложения FizzBuzz

Вот моя форма:

<p>In this field, put the starting number. It must be a positive integer <50.</p> 
<form name="FizzBuzz Form"> 
<input type="text" name="fizzBuzzStart"/> 
</form> 
<div class="button" id="start">Add!</div><br> 
<p>In this field, put the ending number. It must be a positive integer >50.</p> 
<form name="FizzBuzz Form"> 
<input type="text" name="fizzBuzzEnd"/> 
</form> 
<div class="button" id="end">Add!</div><br><br> 
<div class="button" id="play">Let's play!</div><br> 

Это мой script.js файл:

$("#start").click(function(){ 
    var start = $("input[name=fizzBuzzStart]").val();}); 
$("#end").click(function(){ 
    var end = $("input[name=fizzBuzzStart]").val();}); 
$("#play").click(function(){ 
    for (var i=start; i<=end; i++) { 
     if (i%15===0){console.log("FizzBuzz");} 
      else if (i%3===0){console.log("Fizz");} 
      else if (i%5===0){console.log("Buzz");} 
      else {console.log(i);} }});}); 

Любой совет будет весьма признателен!

+0

С одной стороны, вы используете fizzBuzzStart дважды вместо fizzBuzzStart и fizzBuzzEnd. Для другого вы должны сообщить, что именно вы видите как выход. – sberry

+0

Я даже не заметил дубликат fizzBuzzStart. Спасибо, что поймали это. Я не вижу выхода, потому что мои кнопки не работают. Это то, о чем вы спрашивали? Благодарим вас за помощь. Как я уже сказал, я все еще очень новичок в кодировании и действительно понятия не имею, что я делаю. – sodabottle37

ответ

0

Основная проблема заключается в том, что start и end используются в качестве локальных переменных, поэтому они эффективно удаляются, как только они установлены. Сделайте их глобальными и исправьте имя поля в обработчике кликов #end.

var start, end; 

$("#start").click(function() { 
    start = $("input[name=fizzBuzzStart]").val(); 
}); 

$("#end").click(function() { 
    end = $("input[name=fizzBuzzEnd]").val(); 
}); 

$("#play").click(function() { 
    for (var i = start; i <= end; i++) { 
     if (i % 15 === 0) { 
      console.log("FizzBuzz"); 
     } else if (i % 3 === 0) { 
      console.log("Fizz"); 
     } else if (i % 5 === 0) { 
      console.log("Buzz"); 
     } else { 
      console.log(i); 
     } 
    } 
}); 

Демо: http://jsfiddle.net/fJyRb/

+0

Это не работает, когда обработчик щелчка запускается перед вводом значения, и поля ввода могут быть выбраны без какого-либо щелчка (т. Е. С помощью вкладки), но вы правы в том, что 'start' и' end' выходят из области видимости в обработчике щелчка '# play', так что не голосуйте. – sberry

+0

@sberry Вы заметили, что обработчики не привязаны к полям ввода, а к кнопкам под ними? Логика программы заключается в том, что вы должны вводить числа и затем «добавлять», чтобы хранить значения в переменных. Не очень удобный или интуитивно понятный, но это то, что имеет OP. – JJJ

+0

Благодарим вас за то, что мои приложения не очень удобны и интуитивно понятны. Опять же, я действительно новичок во всем, что я сейчас пытаюсь сделать. Я задавался вопросом о доступности моих переменных, но не был уверен, как это исправить. Я обновил файл script.js по вашему предложению, но мои кнопки все еще не функционируют. – sodabottle37