我在另一个元素上设置属性时遇到问题。
我正在使用带有 JS 和 HTML 的 PHP 代码,它看起来像:
<textarea name='$id' id='$id' class='regular-text' cols='60' rows='1' tabindex='2'"
. "onkeypress =\"javascript:document.getElementById('content').setAttribute('onkeypress', document.getElementById('so_observer_heading_count').innerHTML = document.getElementById('content').value.length)\">$value</textarea>
你一定知道我有2个元素。我使用第一个('content')来编写文本,在另一个('so_observer_heading_count')中,应更新第一个元素的符号数量。
所以我的问题是,如何在另一个元素上设置属性。
我已经检查过名称是否正确,当我更改 2. 元素上文本区域的内容时,我从第一个元素中获得了正确的数量。但我只想更改第一个元素中的内容来刷新金额。
而且我不想更改第一个元素的代码!不要被文本区域混淆,将来这将是一个标签或其他东西。
最佳答案
首先:
不要使用内联事件绑定(bind)。始终使用“真正的”javascript,(这样您也可以防止转义引号的问题),这更加干净且更易于维护。
此外,您的代码还有另一个问题:您在文本区域上有一个事件处理程序“按键”,它将每个“按键”绑定(bind)到您的内容元素的另一个属性。这不是很高效并且很可能无法正常工作。此代码应该是您需要的一切:
document.getElementById('content').addEventListener("keyup",function(){
var obs = document.getElementById('so_observer_heading_count');
obs.innerHTML = this.value.length;
});
这是一个 demo 为你。
编辑:我将事件从keypress
更改为keyup
,以1)正确计数2)考虑字符删除。
关于JavaScript setAttribute 到另一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11391103/