javascript oninput只触发一次?

时间:2017-01-22 21:59:19

标签: javascript html cgi

我有一个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

2 个答案:

答案 0 :(得分:1)

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

innerHTML的{​​{1}}代表其默认值。

您需要阅读<textarea>属性才能获得当前值。

&#13;
&#13;
value
&#13;
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);
}
&#13;
&#13;
&#13;

答案 1 :(得分:0)

对于CGI textareas,数据以这种方式获取:

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

不是这样的:

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

足够简单。 ;)