作为 JS 新手,这对我来说很难找到。
我正在编写一个简单的(?)脚本,在文本区域(用于编写 SMS 消息)下显示当前 SMS 剩余的字符数以及到目前为止我已编写的 SMS 数。
我的 header 中有以下 JavaScript:
<script type='text/javascript'>
function CheckCount(text, length) {
var MaxLength = new Number(length);
messages = Math.ceil(((text.value) ? text.value.length : 0) / 160);
remaining = messages * 160 - (((text.value) ? text.value.length : 0) % (messages * 160) || messages * 160);
if (text.value.length == 0) { messages = 1; remaining = 160; }
document.getElementById('messages').innerText = messages + ' SMS';
document.getElementById('remaining').innerText = remaining + ' Characters remaining';
}
</script>
我在网站正文中放了这个:
<textarea name="sms_text" cols="35" rows="5" onKeyUp="javascript:CheckCount(this,4000);" onChange="javascript:CheckCount(this,4000);"></textarea>
<p style="margin-left:174px">
<span id="remaining">160 Characters remaining</span> |
<span style="clear:both" id="messages">1 SMS</span>
</p>
这在 Opera、Safari 和 Chrome 中运行良好。 Firefox 和 IE 有它们的问题。
请不要打我太多。我刚开始使用 JavaScript,经过一天繁琐的搜索后,我无法找到解决方案。 :)
最佳答案
您不需要在 textarea 处理程序属性中包含 javascript:
:
虽然上述是正确的,但您的问题是由使用 innerText
引起的。更改为 innerHTML
在 FireFox 中有效。
要使其在 IE8 中工作,必须声明 messages
和 remaining
。我还删除了多余的行 var MaxLength = new Number(length);
。
function CheckCount(text, length) {
var messages = Math.ceil(((text.value) ? text.value.length : 0) / 160);
var remaining = messages * 160 - (((text.value) ? text.value.length : 0) % (messages * 160) || messages * 160);
if (text.value.length == 0) { messages = 1; remaining = 160; }
document.getElementById('messages').innerHTML = messages + ' SMS';
document.getElementById('remaining').innerHTML = remaining + ' Characters remaining';
}
关于JavaScript 在 FF 和 IE 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9955316/