Как я могу заставить этот javascript var работать на страницах HTML?

Страница 1:

<html>
<head>
</head>
<body>
    <input type="checkbox" class="checkbox" name="item" value="X">Value X<br>
    <input type="checkbox" class="checkbox" name="item" value="Y">Value Y<br>
    <script type='text/javascript'>
        var score = 0;
        $('.checkbox').click (function(){
          var thisCheck = $(this);

          if ( thisCheck.is(':checked') ) {
            score = score + 1;
          }
        });
        sessionStorage.score = score;
    </script>
    <button type="button" onclick="window.location.href='page2.html'">Continue</button>
</body>
</html>

Страница 2:

<html>
<head>
</head>
<body>
    <script type='text/javascript'>
    var score = sessionStorage.getItem('score');
    document.write(score);
    </script>
</body>
</html>

Страница 2 всегда печатает ноль. Как я могу это исправить?
(Если были установлены оба флажка, нам нужно напечатать страницу 2, например)

Спасибо!

NB. Я знаю, что существует простое решение этой проблемы, когда действие формы записывает файл asp, а затем читает его, но я не могу создать новые файлы в этой системе.

4 ответа

Решение

Я нашел решение. score по какой-то причине его анализировали как нечто отличное от Int.

С помощью score = parseInt(score) + 1; решил проблему.

Спасибо всем, кто прислал ответы! Мы добрались там в конце.

Во-первых, ни один из ваших флажков на самом деле не имеет класса 'флажок', так что событие jquery никогда не сработает, даже если вы установите один из флажков.

Кроме того, вы объявляете переменную thisCheck, но пытаетесь получить к ней доступ, используя thischeck (обратите внимание на строчную букву c). Javacript чувствителен к регистру, поэтому 'thischeck' никогда не присваивается значение.

Вы плохо настраиваете сеанс, вам нужно сделать это, вам нужноsessionStorage.setItem("score", score)

Вам нужно установить значение sessionStorage для каждого клика:

var score = 0;
$('.checkbox').click (function() {
  if (this.checked) {
      score = score + 1;
  }
  sessionStorage.score = score;
});
sessionStorage.score = score;

Обратите внимание, что если вы, вероятно, хотите вычесть 1, если флажок снят, в этом случае попробуйте этот код:

var score = 0;
sessionStorage.score = score;

$('.checkbox').click (function() {
    score = score + (this.checked ? 1 : -1);
    sessionStorage.score = score;
});

И, кстати, вам нужно добавить class="checkbox" на входы.

Другие вопросы по тегам