2017-01-22 243 views
0

我有一个JavaScript函数会触发一次问题。javascript oninput只触发一次?

我开始时在函数中有一个更简洁的结构,但是把它分解成不连续的操作来看看我能否计算出任何东西。行为完全一样。

在我的HTML,头部标签内,我有:

<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

+0

CGI为网络服务器交谈外部程序以处理HTTP请求的装置。你正在处理客户端JavaScript。没有涉及HTTP,所以没有涉及CGI。 – Quentin

+0

这是一个CGI表单。我担心的是,有些事情因此而有所不同。这就是我提到它的原因,并不是因为我认为服务器在页面启动后正在做任何工作。但是,是的,当然你是对的。 – fyngyrz

回答

0

的CGI文字区域,该数据被取出这样:

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

不是这样:

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

够简单。 ;)

1

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

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

+0

很好地完成。我赞成你。 – fyngyrz