JavaScript无法在FF和IE中运行

时间:2012-03-31 11:02:42

标签: javascript

作为JS新手,我很难追查到这一点。

我正在写一个简单的(?)脚本,它在textarea(用于编写SMS消息)下显示我当前短信已经剩下多少个字符以及到目前为止我写了多少短信。

我的标题中包含以下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,经过一天的乏味搜索后,我无法找到解决方案。 :)

1 个答案:

答案 0 :(得分:3)

您不需要在textarea处理程序属性中包含javascript:

虽然上述情况属实,但您的问题是由使用innerText引起的。更改为innerHTML可在FireFox中使用。

http://jsfiddle.net/ZTRFA/1/

要使其在IE8中有效,必须声明messagesremaining。我还删除了冗余行var MaxLength = new Number(length);

http://jsfiddle.net/ZTRFA/2/

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';
}