Не удается получить 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);
Это можно изменить на следующей скрипке,