2013-07-02 1 views
0

Я хочу, чтобы строка случайным образом чередовала прописные и строчные буквы.Альтернативный заголовок в jQuery

Для этого я захватываю содержимое класса «post__title» в строку, вставляя эту строку в массив букв. Затем закодируйте этот массив и произвольно присвойте 0 или 1 каждой букве. Если значение равно 1, буква должна быть преобразована в верхний регистр, если значение равно 0, буква должна быть преобразована в нижний регистр. Затем это необходимо повторно заменить на «post__title», заменив старый контент.

Я довольно неопытный, но до сих пор у меня есть следующее, что приводит к ошибке консоли «Неподготовлено TypeError: невозможно прочитать значение свойства« неопределенного ». Я не могу понять, как заставить его работать.

$(window).load(function() { 
var z; 
var title = $('.post__title').text().split(""); 
for (i = 0; i < title.length; ++i) { 
    z = Math.floor(Math.random() * (1 - 0 + 1)) + 0; 
    if (z==1) { 
     title[i].this.value.toUpperCase(); 
    } 
    else { 
     title[i].this.value.toLowerCase(); 
    } 
}; 
$.map(title, function(val,index) { 
    var str = index + ":" + val; 
    return str; 
}).join(", "); 
$(".post__title").text(str); 
}); 
+2

вам не нужно 'this.value', просто используйте' название [я] .toUpperCase(); ' – stackErr

+0

Что с' (1 - 0 + 1) '? Почему бы не просто «2»? – Archer

+0

Klaas, с кем вы разговариваете? Используйте '@ someone', чтобы сообщить пользователю, что вы ответили – stackErr

ответ

0

Эта функция будет работать:

$(window).load(function() { 
    var z; 
    var title = $('.post__title').text(); 
    var str = ""; 
    for (i = 0; i < title.length; ++i) { 
     z = Math.floor(Math.random() * (1 - 0 + 1)) + 0; 
     if (z==1) 
      str += title[i].toUpperCase(); //put value in str, no need for .this.value 
     else 
      str += title[i].toLowerCase(); 
    }; 

    $(".post__title").html(str); 
}); 
+0

Благодарим за помощь! –

0
$(window).load(function() { 
    var z; 
    var title = $('.post__title').text().split(""); 
    for (i = 0; i < title.length; ++i) { 
     z = Math.floor(Math.random() * (1 - 0 + 1)) + 0; 
     if (z==1) { 
      title[i].toUpperCase(); 
     } 
     else { 
      title[i].toLowerCase(); 
     } 
    $.map(title, function(val,index) { 
     var str = index + ":" + val; 
     return str; 
    }).join(", "); 
    $(".post__title").text(str); 
    }); 

Вы использовали title[i].this.value.toUpperCase();. это неверно, так как title[i] уже имеет ссылку на письмо. Просто позвоните toUpperCase() или toLowerCase() по телефону title[i].