如何限制特定innerHTML的长度

时间:2017-03-12 04:37:53

标签: javascript html

我的代码用于随机播放文本并创建一组随机字符。 我想将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;
&#13;
&#13;

1 个答案:

答案 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>