如何使用div / span中没有的JavaScript选择文本

时间:2019-10-25 18:02:07

标签: javascript

我正在使用https://www.w3schools.com/howto/howto_js_typewriter.asp上显示的打字效果。但是,我想通过使“效果!”一词来对其进行一些更改。文字为蓝色。

问题是,我不知道如何选择未包装在html元素(如span / div)中的文本。我认为javascript / css不能选择单个字符,因此我尝试在if语句中注入标签,但浏览器似乎会自动关闭任何打开的span标签。不知道从这里去哪里。

W3的原始代码

<p id="demo"></p>
var i = 0;
var txt = 'Lorem ipsum typing effect!'; /* The text */
var speed = 50; /* The speed/duration of the effect in milliseconds */

function typeWriter() {
  if (i < txt.length) {
    document.getElementById("demo").innerHTML += txt.charAt(i);
    i++;
    setTimeout(typeWriter, speed);
  }
}

我的代码

var i = 0;
var txt = 'Lorem ipsum typing effect!'; /* The text */
var speed = 50; /* The speed/duration of the effect in milliseconds */

function typeWriter() {
  if (i < txt.length) {
    document.getElementById("demo").innerHTML += txt.charAt(i);
    i++;
    setTimeout(typeWriter, speed);
  if (i == 20) {
    document.getElementById("demo").innerHTML += '<span>';
  if (i == 26) {
    document.getElementById("demo").innerHTML += '</span>';
}

我希望获得“ Lorem ipsum输入效果”!具有“效果!”包裹在一个跨度中,以便我可以将文本更改为蓝色。即"Lorem ipsum typing <span style='color:blue;'>effect!</span>"

2 个答案:

答案 0 :(得分:3)

在将txt变量注入到innerHTML中之前,您需要对其进行一些操作。这是完整的代码。

addCourses() {

   const courses = this.courses.filter((item) => {
   return this.selectedCourses.indexOf(item.id) > -1
   });

  courses.forEach((course) => {
  this.packageForm.package_courses.push({
     course_id: course.id,
     course: course,
     price: 0
  });
});
this.selectedCourses = [];
},

答案 1 :(得分:1)

使用replace查找并交换您要查找的整个字符串。不过,直到整个单词都可见后,该内容才可见。

if (i == 26) {
    var txt = document.getElementById("demo").innerHTML;
    txt.replace("effect!", "<span style='color:blue;'>effect!</span>");
    document.getElementById("demo").innerHTML = txt
}

如果您希望“随您走”,则需要将i在20到26之间的范围内的每个字符环绕,作为将其添加到DIV中的一部分。

document.getElementById("demo").innerHTML += "<span style='color:blue;'>" + txt.charAt(i) + "</span>";