我想在按钮点击时将段落中某些随机字符的颜色更改为红色。请找我的代码。我在这方面有一些错误。
$('input').click(function(){
var para = $('#para');
var position = Math.floor(Math.random()*100);
var character = [];
var i=0
while ( i <= 30 )
{
character[i] = para.html().substr(position*(i+1), 1);
i++;
}
$.each(character, function() {
character.css('color','red');
});
});
首先,我创建了一个包含段落中30个随机字母的数组
接下来,我使用each()
迭代数组中的每个元素以应用css属性。
但是在控制台窗口中弹出一个错误,说对象没有方法'css'
我做错了什么?
答案 0 :(得分:3)
首先,CSS方法仅适用于jquery对象。字符数组中有字符串。 css方法不适用于字符串。
其次,你的每个方法都写错了。它应该是这样的
$.each(character, function(index, value) {
// Do something
});
对于您的问题陈述,要更改字符串中某些随机字符的颜色。这是Fiddle。试试这个。
这是代码:
$('input').click(function(){
var para = $('#para');
var charArray = $('span', para);
// case: No span (Initial String)
if (charArray.length === 0) {
var html = para.html();
var newArr = [];
var len = html.length;
for (var i=0; i<len; i++) {
newArr.push('<span>' + html[i] + '</span>');
}
html = newArr.join('');
para.html(html);
charArray = $('span', para);
}
// Reset all spans
$.each(charArray, function(i, value) {
value.style.color = '';
});
var paralen = charArray.length;
for (var i=0; i<30; i++) {
var pos = Math.floor(Math.random()*100);
pos = pos % paralen;
charArray[pos].style.color = 'red';
}
});
答案 1 :(得分:2)
您需要查看$.each的文档。一个可能的解决方案:
$('input').click(function() {
var $para = $('#para');
var position = Math.floor(Math.random()*100);
var character = [];
for ( var i=0; i <= 30; i++ ) {
character[i] = $("<span>" + $para.text().substr(position*(i+1), 1)
+ "</span>");
character[i].css('color', 'red');
}
$para.empty();
$.each(character, function(idx, val) {
$(val).appendTo($para);
});
});