我的代码用于随机播放文本并创建一组随机字符。 我想将shuffle生成的长度限制为innerHTML中包含的字符数。 例如:HOME,洗牌只有4个字符而不是更多 研究,洗牌所有7个字符而不是更多 ......等等。
这是代码
// Shuffle
jQuery(function($) {
function text_shuffle() {
"use strict";
var counter = 0, all = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789*?><[]&@#)(.%$-_:/;?!";
$_inter = setInterval(function() {
var text = document.getElementById("text-shuffle");
text.innerHTML = text.innerHTML.substring(0, counter) + all.charAt(Math.floor(Math.random()*all.length)) + text.innerHTML.substring(counter+1);
counter = (counter+1)%text.innerHTML.length;
}, 150);
}
var value, $_inter;
$("#text-shuffle").mouseenter( function(){
value = $(this).html();
text_shuffle();
}).
mouseout(function(){
clearInterval($_inter);
$(this).html(value);
});
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<div id="text-shuffle">title1</div>
&#13;
答案 0 :(得分:3)
你非常接近(实际上你做的很漂亮)。问题在于,替换中的某些字符确实很奇怪(特别是>
,<
和&
。
我看到你正在使用jQuery,所以我修改了文本被提取的方式并在shuffle div中替换。
// Shuffle
jQuery(function($) {
function text_shuffle() {
"use strict";
var counter = 0, all = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789*?><[]&@#)(.%$-_:/;?!";
$_inter = setInterval(function() {
var text = $("#text-shuffle").text();
text = text.substring(0, counter) + all.charAt(Math.floor(Math.random()*all.length)) + text.substring(counter+1);
$("#text-shuffle").text(text);
counter = (counter+1)%text.length;
}, 150);
}
var value, $_inter;
$("#text-shuffle").mouseenter( function(){
value = $(this).html();
text_shuffle();
}).
mouseout(function(){
clearInterval($_inter);
$(this).html(value);
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<div id="text-shuffle">title1</div>