Я пытаюсь раскрасить строку/слово в HTML. Я нашел ответ здесь, но у меня возникли проблемы с пониманием того, как конвертировать, чтобы использовать функцию более одного раза..
<div id="arch" style="font-size: 40px">First Word work fine</div>
<div id="arch" style="font-size: 40px">Second time - does not work</div>
var colours = ["#635636", "#FF00C0", "#990066", "#FF9966", "#996666", "#00FF00", "#CC9933"],
idx;
$(function() {
var div = $('#arch');
var chars = div.text().split('');
div.html('');
for(var i=0; i<chars.length; i++) {
idx = Math.floor(Math.random() * colours.length);
var span = $('<span>' + chars[i] + '</span>').css("color", colours[idx]);
div.append(span);
}
});
Как создать функцию, которую я могу вызвать несколько раз в HTML?
У вас может быть только один элемент с определенным id
. Замените свой id
class
(или добавьте определенный класс в элементы), как следует
<div class="arch" style="font-size: 40px">First Word work fine</div>
<div class="arch" style="font-size: 40px">Second time - does not work</div>
Javascript
//code has been update in response of observation made by adeneo, thanks adeneo
var colours = ["#635636", "#FF00C0", "#990066", "#FF9966", "#996666", "#00FF00", "#CC9933"],
idx;
$(function () {
$('.arch').each(function () {
var div = $(this),
chars = div.text().split(''),
span = '';
div.html('');
for (var i = 0; i < chars.length; i++) {
idx = Math.floor(Math.random() * colours.length);
span = span + $('<div>').append($('<span>' + chars[i] + '</span>').css('color', colours[idx])).html();
}
div.append(span);
});
});
Я добавил код, чтобы избежать частого обновления DOM
div.text()
и div.html()
будет работать на обоих элементах одновременно?
Измените идентификатор на своем div на классы -
<div class="arch" style="font-size: 40px">First Word work fine</div>
<div class="arch" style="font-size: 40px">Second time - does not work</div>
А затем измените свой селектор в вашем jQuery -
var div = $('.arch');
Как отметил Ejay, это не работает, потому что вы использовали идентификаторы. Вы можете использовать идентификатор только один раз на странице. То, что вы хотите использовать, - это классы.
Разметка:
<div class="arch">You content</div>
Javascript:
var div = $('.arch');
Я также обновил JSFiddle: http://jsfiddle.net/8VDm4/1/