JavaScript: не работает на странице - PullRequest
0 голосов
/ 06 декабря 2011

У меня есть какой-то javacript, который я пытаюсь реализовать на HTML-странице. Код ниже - как я могу запустить его, как только файл .html будет открыт? Он хочет, чтобы он подсказал мне ввести вес, как только я его открою.

<script type="text/javascript">
    var weight = parseInt(prompt("What is your weight?"));
    if (weight > 126) {
        alert('Please enter a weight lighter than 126');
    }
    document.writeln('<br/>');
    var wArray = ["fly", "superfly", "bantam", "superbantam", "feather"];

    function recruit() {
        if (0 < weight < 112){
            document.writeln('You are in' + wArray[0] +'class!');
        }
        if (112 < weight < 115){
            alert('You are in' + wArray[1] +'class!');
        }
        if (weight > 115 && weight < 118){
            alert('You are in' + wArray[2] +'class!');
        }
        if(weight > 118 && weight < 122){
            alert('You are in' + wArray[3] +'class!');
        }
        if (weight > 122&& weight < 126){
            alert('Your weight class is' + wArray[4]);
    }
</script>

Ответы [ 4 ]

1 голос
/ 06 декабря 2011

У вас 2 проблемы со скриптом:

  • В вашем recruit() отсутствует закрывающая скобка }
  • Вы нигде не звоните recruit().

Несколько других вопросов :):

  • 112 < weight < 115 не то, что вы хотите. Он вернет истину, даже если вес равен 1000. Он проверит, превышает ли вес 112, а затем сравнит, если результат меньше 115.

Попробуйте:

var weight = 1000;
// 112 < 1000 => true, true < 115 => true
if (112 < weight < 115) { 
   alert("112 < weight < 115");
}
  • Вы оставили некоторые значения в своих чеках. Если вы проверите для weight < 118 в одном if и weight > 118 в другом if, что произойдет, если вес точно равен 118?

  • Используйте блоки if { } else if { } вместо нескольких if-s. В вашей функции рекрута, даже если вес равен 110, а тело 1-го if блока выполнено, вы по-прежнему проверяете вес в каждом другом if.

  • Добавьте пробелы в выходные строки, например: 'You are in ' + wArray[0] + ' class!:).

  • Как Rocket написал в комментариях: parseInt() должен вызываться с 10 в качестве второго параметра (radix) для принудительного разбора в десятичную систему. См это .

  • Бонус : Прекратите использовать document.writeln как можно скорее, поскольку это учит вас плохим практикам. Например, см. это или это .

ЗДЕСЬ - это версия для решения этих проблем.

Примечание: Код выполняется внутри window.onload, чтобы убедиться, что остальная часть документа уже загружена, чтобы он мог получить доступ к div.

0 голосов
/ 06 декабря 2011

Вроде нормально работает: http://jsfiddle.net/maniator/XRGHt/

Вы пропустили } в конце.

0 голосов
/ 06 декабря 2011

Вы можете вызвать функцию javascript, когда страница загружается следующим образом:

<body onload="myFunction();">
0 голосов
/ 06 декабря 2011
<script type="text/javascript">
  var weight = parseInt(prompt("What is your weight?"));
  if (weight > 126) {
    alert('Please enter a weight lighter than 126');
  }
  document.writeln('<br/>');
  var wArray = ["fly", "superfly", "bantam", "superbantam", "feather"];


  function recruit() {
    if (0 < weight < 112){
      document.writeln('You are in' + wArray[0] +'class!');
    }
    if (112 < weight < 115){
      alert('You are in' + wArray[1] +'class!');
    }
    if (weight > 115 && weight < 118) {
      alert('You are in' + wArray[2] +'class!');
    }
    if(weight > 118 && weight < 122){
      alert('You are in' + wArray[3] +'class!');
    }
    if (weight > 122&& weight < 126){
      alert('Your weight class is' + wArray[4]);
    }
  }
  recruit();
</script>
...