Не удается получить document.write для отображения обновленной переменной

Еще один вопрос новичка, который коренится в очень поверхностном понимании JS.

Я создаю небольшую многоступенчатую онлайн-форму (сделанную в одном html путем скрытия div), где каждое нажатие кнопки увеличивает переменную с фиксированным числом:

JS:

var score = 20;

function updateScore (){
            score = score + 10;
            result.value = score;
        }

Я хочу отобразить счет:

С помощью <input type="text" name="result" id="result" value="" size="" readonly> Я получаю правильное значение (30).

Однако, когда я использую <script>document.write(result)</script> Я ничего не получаю и пользуюсь <script>document.write(score)</script> Я получаю оригинальную переменную (20).

Та же проблема, когда я хочу, чтобы var выводил в прогресс-баре jquery.

Как я могу убедиться, что это обновленная переменная, которая отображается в document.write?

РЕДАКТИРОВАТЬ: полный JS

var currentLayer = 'lp';
var score = 10;

function showLayer(lyr){
    hideLayer(currentLayer);
    document.getElementById(lyr).style.visibility = 'visible';
    document.getElementById(lyr).style.display = 'block';
    currentLayer = lyr;
}
function hideLayer(lyr){
    document.getElementById(lyr).style.visibility = 'hidden';
    document.getElementById(lyr).style.display = 'none'
}

function goTo(lyr){
    showLayer(lyr);
    score = score + 10;
    resultat.value = score;
}
function goToMinus(lyr){
    showLayer(lyr);
    score = score - 10;
    resultat.value = score;
}    

  $(function() {
    $( "#progressbar" ).progressbar({
      value: score
      });
  });

2 ответа

result является элементом ввода HTML, поэтому печать результата будет такой:

<script>document.write(result.value)</script>

О написании правильного "счета" var vlaue убедитесь, что есть только один "счет оценки", и он находится в той же области видимости.

Я бы предложил использовать document.getElementById('result').value в отличие от result.value в вашем updateScore функция для обеспечения доступа к нужному элементу.

Я включил пример, где setInterval позвоню вашему updateScore каждую секунду, чтобы проиллюстрировать обновляемый результат,

var score = 20;

function updateScore (){
            score = score + 10;      
            document.getElementById("result").value = score;
        }

setInterval(updateScore,1000);

Это можно изменить на следующей скрипке,

http://jsfiddle.net/d3QqN/

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