如何使用javascript读取文本区域中的文本?

83qze16e  于 2021-09-13  发布在  Java
关注(0)|答案(2)|浏览(479)

因此,我是js新手,正在尝试了解基本知识。我决定做一个基本的网页文本编辑器。现在我正试图用js来区分单词。这是我的代码,基本上它决定了文本区域中是否输入了单词“bob”。

<script>

function findBob() {
    var inputText = document.getElementById("box").innerHTML;
    if(inputText === "bob") {
        document.getElementById("box").innerHTML = "true";
    } 
    if (inputText !== "bob") {
        document.getElementById("box").innerHTML = "false";
    }
}
</script>

<textarea rows=10; col= 5; id="box">
bob</textarea>

<button onClick="findBob();">FIND BOB</button>

现在,在我点击“查找bob”按钮后,它将文本更改为“true”,这是完美的,但是,如果我在文本区域添加了一些胡言乱语,然后再次单击“查找bob”,则不会发生任何事情。如果我对textarea做了任何操作,该函数将无法工作。即使我重新加载页面,将“bob”退格并重新键入“bob”,也不会发生任何事情。
现在我想我已经破坏了一些javascript语法,或者类似的东西,但我无法理解。我做错了什么?
-编辑-我正在使用 === ,与其他方法不同,因为这是另一个stackoverflow post,请在此处找到它。

hm2xizp9

hm2xizp91#

这个 innerHTML textarea的值表示其默认值。
使用javascript更改默认值仅在以下情况下有效:
该值未更改为默认值或默认值
表单已重置
在文本区域中键入后,这两个选项都不正确。
使用 value 属性来更改当前值,而不是 innerHTML .

wr98u20j

wr98u20j2#

@quentin回答了您的基本问题,但您可以将代码重构为以下更好的形式:

function findBob() {
  // keep a reference to the textarea DOM element instead of looking up multiple times
  const textarea = document.getElementById('box');

  // if statements have an else component, so you only need to check once for the truthy condition.
  // access the content of the textarea via `value`. `toLowerCase` ensures that Bob, bob, BOB, etc all match true
  // `indexOf` checks if the 'bob' value is found anywhere in the contents
  if (textarea.value.toLowerCase().indexOf('bob') > -1) {
    // use the reference to the textarea here.
    // Don't need to use true/false as strings, you can set them directly.
    textarea.innerHTML = true;
  } else {
    textarea.innerHTML = false;
  }
}

相关问题