【问题标题】:I want each word that is being generated by var text to be within individual <span> tags我希望 var text 生成的每个单词都在单独的 <span> 标记内
【发布时间】:2021-06-05 11:27:54
【问题描述】:

我目前在此处加载我的网站时生成文本https://www.droolstudios.co.uk/home。我现在正在进行一些更改,并希望每个单独的工作都在 &lt;span&gt;&lt;/span&gt; 中生成。

HTML

        var i = 0;
        var txt = 'Branding. Websites. Design & Creative Services. We turn your vision into reality.';
        //var txt = 'Turning your creative visions into reality with ease and care.... and we also do dog sitting.';

        function typeWriter() {
            if (i < txt.length) {
                document.getElementsByClassName('js-typewrite')[0].innerHTML += txt.charAt(i);
                i++;
                setTimeout(typeWriter, 95);
           
            }
        }

        setTimeout(typeWriter, 1000);
    <section>
            <div class="home-intro">
                <div class="sub-heading">
                    <span class="typewrite anim-typewrite js-typewrite"></span>
                </div>

            </div>
        </section>

有人有什么想法吗?

【问题讨论】:

  • 你想生成html吗? var text 中的值变成 span 中的每个单词,所有 span 都在同一个 div 中?
  • 例如 Design & Creative Services. 是 4 个字 Design、&、Creative and Services。一个词是由空格分隔的东西
  • 是的,完全正确。

标签: javascript html jquery css var


【解决方案1】:

我用 span 标签嵌入 var txt 的每个单词生成新的 var 结果,然后你只需在你想要的地方生成你的 html。

var txt = 'Branding. Websites. Design & Creative Services. We turn your vision into reality.';

var sp0 = txt.split(" "); // split by space

var result = sp0.map( (w) => "<span>" + w + "</span>").join("");
console.log(result)

join 命令将数组转换为一行,如果要保留数组,请不要执行该命令

【讨论】:

    【解决方案2】:

    你在寻找这样的东西吗?

            var i = 0;
            var txt = 'Branding. Websites. Design & Creative Services. We turn your vision into reality.';
            //var txt = 'Turning your creative visions into reality with ease and care.... and we also do dog sitting.';
            let splitted=txt.split(" ");
    
            function typeWriter() {
                if (i < splitted.length) {
                    document.getElementsByClassName('js-typewrite')[0].innerHTML += splitted[i]+ " ";
                    i++;
                    setTimeout(typeWriter, 395);
               
                }
            }
    
            setTimeout(typeWriter, 1000);
        <section>
                <div class="home-intro">
                    <div class="sub-heading">
                        <span class="typewrite anim-typewrite js-typewrite"></span>
                    </div>
    
                </div>
            </section>

    【讨论】:

    • 在某种程度上是的,但这不会将每个单独的单词放在一个跨度内。我想一个解决方案是已经创建了跨度,而不是生成了 html,它已经存在并显示了?你怎么看?
    • 也许@Frenchy 的答案与您正在寻找的方式更相似
    猜你喜欢
    • 2015-10-18
    • 1970-01-01
    • 2014-07-16
    • 2020-08-29
    • 2019-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多