如何从网格中的 contenteditable div 获取用户输入?

发布于 2025-01-21 01:55:31 字数 603 浏览 2 评论 0 原文

我一直在尝试创建一个Wordle型游戏,但是我不知道如何从可满足的Div中获得用户输入。我想发生的事情是,如果用户输入字母“ a”,则DIV中的字母会变绿,而另一个Div中的其他字母是不同的颜色。

因此,基本上,当用户完成每个字母的键入以猜测时,他们会单击输入,字母“ a”将变绿。 (在这种情况下,这个词是绝对的) 另外,如果可能的话,请确保用户实际上在使功能成为可能之前填写了行中的所有框。

let word = "absolute";



function inputFunc() {

event.target.nextElementSibling.focus();

}

document.getElementById('amo1').addEventListener('keypress', function(e) {
    document.getElementById('amo1').value = this.innerHTML;
});

这是我在JSFIDDLE中的完整代码,包括所有Divs,CSS,HTML和JS代码:

I have been trying to create a wordle-type game, but I don't know how to get the user input from the contenteditable div's. What I want to happen is if the user inputs the letter 'a' for example, the letter in the div would turn green, whilst the other letters in the other div's are a different color.

So basically, when the user is done typing in every letter for a guess, they would click enter and the letter 'a' would turn green. (The word in this case would be absolute)
Also if possible making sure the user actually fills out all the boxes in the row before making the function possible.

let word = "absolute";



function inputFunc() {

event.target.nextElementSibling.focus();

}

document.getElementById('amo1').addEventListener('keypress', function(e) {
    document.getElementById('amo1').value = this.innerHTML;
});

Here is my full code in JSFiddle, including all the divs, CSS, HTML and JS code: https://jsfiddle.net/Infui/c7q30gez/1/

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一身仙ぐ女味 2025-01-28 01:55:31

https://codepen.io/codmitu/pen/pen/pen/pen/lyegznn?editors=0011

html:

<p>absolute</p>
<div contenteditable="true" style="border: 5px solid; padding: 5px"></div>
<button>check</button>

JS:

const pText = document.querySelector("p").innerText
const div = document.querySelector("div")
const button = document.querySelector("button")


button.addEventListener("click", () => {
  const text = div.textContent
  //checking for numbers
  if (text.match(/\d/gi)) {
    div.innerText = text
    return 
  }

    div.innerHTML = ""
    text.split("").forEach(letter => {
    if (pText.includes(letter)) {
      div.innerHTML += `<span style="color: green">${letter}</span>`
    } else {
      div.innerHTML += `<span style="color: grey">${letter}</span>`
    }
  })
})

//blur the div if text is longer than 8 letters
div.addEventListener("keydown", (e) => {
   if (div.innerText.length > 7 || e.keyCode == 32) {
     div.blur()
   }
})

//clear on focus
div.addEventListener("focus", () => {
   div.innerHTML = ""
})

https://codepen.io/codmitu/pen/LYegzNN?editors=0011

html:

<p>absolute</p>
<div contenteditable="true" style="border: 5px solid; padding: 5px"></div>
<button>check</button>

js:

const pText = document.querySelector("p").innerText
const div = document.querySelector("div")
const button = document.querySelector("button")


button.addEventListener("click", () => {
  const text = div.textContent
  //checking for numbers
  if (text.match(/\d/gi)) {
    div.innerText = text
    return 
  }

    div.innerHTML = ""
    text.split("").forEach(letter => {
    if (pText.includes(letter)) {
      div.innerHTML += `<span style="color: green">${letter}</span>`
    } else {
      div.innerHTML += `<span style="color: grey">${letter}</span>`
    }
  })
})

//blur the div if text is longer than 8 letters
div.addEventListener("keydown", (e) => {
   if (div.innerText.length > 7 || e.keyCode == 32) {
     div.blur()
   }
})

//clear on focus
div.addEventListener("focus", () => {
   div.innerHTML = ""
})
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文