javascript oninput 只触发一次?

javascript oninput fires only once?

我有一个 JavaScript 函数只触发一次的问题。

我从函数中的一个更简洁的结构开始,但将它分解成离散的操作,看看我是否能找出任何东西。完全一样。

在我的 HTML 中,在 HEAD 标签中,我有:

<SCRIPT>
function onCharInput()
{
var conpagechars = document.getElementById("pagecontentx").innerHTML;
var conpagecharcount = conpagechars.length.toString();
document.getElementById("pccount").innerHTML = conpagecharcount;
console.log('test',conpagecharcount);
}
</SCRIPT>

在打开的 CGI textarea 输入元素中,我有这个:

id="pagecontentx" oninput="onCharInput()"

在页面的其他地方,我有这个:

<span id="pccount"></span>

当我在文本区域中键入内容时,跨度会更新为内容的正确大小——恰好一次。之后,它什么都不做。我可以添加字符,删除字符......什么都没有。添加控制台调用后,打开 firefox 控制台,我也只看到一次结果。据我所知,该函数在第一次之后就再也不会被调用了。

TIA

对于 CGI 文本区域,数据是这样获取的:

var conpagechars = document.getElementById("pagecontentx").value;

不是这样的:

var conpagechars = document.getElementById("pagecontentx").innerHTML;

很简单。 ;)

每次有输入事件时都会触发该函数,您每次都只是在读取相同的字符串。

<textarea>innerHTML 表示其 默认值

您需要阅读 value 属性 以获取其 当前 值。

document.querySelector("textarea").addEventListener("input", log);

function log(event) {
  console.log("Log function is firing");
  console.log("Current value: " + this.value);
  console.log("Default value: " + this.innerHTML);
}
<textarea>This is the default value</textarea>