Функция jquery работает только один раз

0

У меня нет самой яркой идеи, почему эта функция работает только один раз. Любые идеи?

var ColorsTable = ['red', 'green', 'blue', 'gold', 'white', 'black'];
var Rand = ColorsTable[Math.floor(Math.random() * ColorsTable.length)];
var Rand2 = ColorsTable[Math.floor(Math.random() * ColorsTable.length)];

jQuery( document ).ready(function( $ ) {
    $('.losuj').click(function () {
        $("#rama").css("background", Rand);
        $("#rama2").css("background", Rand2);
                var input = $('#wpis');
                input.val('')
                input.val(input.val() + Rand);
                var input2 = $('#wpis2');
                input2.val('')
                input2.val(input2.val() + Rand2);
    }); });

http://jsfiddle.net/U6MFp/5/

  • 2
    Потому что вы передаете значение Rand вместо генерации нового случайного значения при каждом запуске.
Теги:
function

2 ответа

3
Лучший ответ

Случайные цвета вычисляются только один раз в pageload, перемещаются внутри обработчика кликов

var ColorsTable = ['red', 'green', 'blue', 'gold', 'white', 'black'];


jQuery(document).ready(function ($) {
    $('.losuj').click(function () {
        var Rand = ColorsTable[Math.floor(Math.random() * ColorsTable.length)];
        var Rand2 = ColorsTable[Math.floor(Math.random() * ColorsTable.length)];
        $("#rama").css("background", Rand);
        $("#rama2").css("background", Rand2);
        var input = $('#wpis');
        input.val('')
        input.val(input.val() + Rand);
        var input2 = $('#wpis2');
        input2.val('')
        input2.val(input2.val() + Rand2);
    });
});

FIDDLE

1

Я предполагаю, что вы ожидаете разного цвета каждый раз? Если это случай, вы генерируете случайные цвета только один раз, когда ваш документ загружается и использует одни и те же значения каждый раз.

Попробуйте переместить верхний код внутри определения функции следующим образом:

var colorsTable = ['red', 'green', 'blue', 'gold', 'white', 'black'];

$(document).ready(function() {
    $('.losuj').click(function () {
       var rand = colorsTable[Math.floor(Math.random() * colorsTable.length)];
       var rand2 = colorsTable[Math.floor(Math.random() * colorsTable.length)];

       $("#rama").css("background", rand);
       $("#rama2").css("background", rand2);
       $('#wpis').val(input.val() + rand);
       $('#wpis2').val(input2.val() + rand2);
    }); 
});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню