решение в php
<?php
function random_5(){
return rand(1,5);
}
function random_7(){
$total = 0;
for($i=0;$i<7;$i++){
$total += random_5();
}
return ($total%7)+1;
}
echo random_7();
?>
Лучшим подходом является сохранение старого значения с использованием .data. Это избавляет от создания глобальной переменной, от которой вам следует держаться подальше, и сохраняет информацию, заключенную в элемент. Реальный пример того, почему глобальные переменные плохие, задокументирован здесь
, например,
<script>
//look no global needed:)
$(document).ready(function(){
// Get the initial value
var $el = $('#myInputElement');
$el.data('oldVal', $el.val() );
$el.change(function(){
//store new value
var $this = $(this);
var newValue = $this.data('newVal', $this.val());
})
.focus(function(){
// Get the value when input gains focus
var oldValue = $(this).data('oldVal');
});
});
</script>
<input id="myInputElement" type="text">
В русскоязычном ответе он связывает событие фокуса. Я не думаю, что это необходимо.
Вы можете сохранить старое значение в событии изменения.
<script>
$(document).ready(function(){
var newValue = $('#myInputElement').val();
var oldValue;
$('#myInputElement').change(function(){
oldValue = newValue;
newValue = $(this).val();
});
});
</script>
<input id="myInputElement" type="text">
Вы можете скопировать значение поля ввода в скрытое поле всякий раз, когда фокус покидает поле ввода (что должно делать то, что вы хотите). См. Код ниже:
<script>
$(document).ready(function(){
$('#myInputElement').bind('change', function(){
var newvalue = $(this).val();
});
$('#myInputElement').blur(function(){
$('#myHiddenInput').val($(this).val());
});
});
</script>
<input id="myInputElement" type="text">
(не проверено, но должно работать).