javascript - 如何更改每个字符的颜色

标签 javascript

我的某些代码有问题。我需要在将每个后续字母输入到输入中时更改其颜色

let p = document.querySelector("p");
let input = document.querySelector("input")

function randomColor() {
  let r = Math.floor(Math.random() * 256);
  let g = Math.floor(Math.random() * 256);
  let b = Math.floor(Math.random() * 256);
  return "rgb(" + r + " ," + g + " ," + b + ")";
}

input.addEventListener('input',function(){
   p.innerText = input.value
   for (var i = 0; i < p.length; i++) {
     p[i].style.color = randomColor()
   }
})
<input type="text" name="">
 <p></p>
我的问题: 它们并不都是不同的颜色,例如:我输入你好,每个字母应该是不同的随机颜色**************************** ********************************** 请帮忙

最佳答案

您应该使用innerHTML,并在每次输入时添加一个带有随机颜色的span。另外,要获取插入的文本,您需要使用事件对象,如下所示:

let p = document.querySelector("p");
let input = document.querySelector("input")

function randomColor() {
  let r = Math.floor(Math.random() * 256);
  let g = Math.floor(Math.random() * 256);
  let b = Math.floor(Math.random() * 256);
  return "rgb(" + r + " ," + g + " ," + b + ")";
}

input.addEventListener('input',function(e){
  // since e.data can be null when backspacing we remove the last span when that occurs:
  if (e.data === null){
    p.removeChild(p.lastChild)
  }
  else {
    p.innerHTML = p.innerHTML + "<span style='color:" + randomColor() + "'>" + e.data + "</span>"
  }
})
<input type="text" name="">
 <p></p>

关于javascript - 如何更改每个字符的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59864835/

相关文章:

javascript - 如何正确更新对象?

javascript - nodejs EADDRINUSE 错误

javascript - jQuery UI 自动完成小部件 : Edit search term before perform search

javascript - 是否可以强制 socket.io 使用 wss 而不是 ws,而不必更改为 https?

javascript - 如何查找动态生成的多个表列的总和

javascript - 在 Javascript + MVC3 中使用 Json 解析实体列表

javascript - 使用 ng-repeat 有条件地应用过滤器

javascript - 如何创建具有一个可以采用对象或变量的参数的方法或函数

javascript - 如何获取带有授权 token 的 Google 用户 openid?

javascript - Javascript 和 JQuery 性能不佳