2012-03-31 40 views
1

工作这是难以追查,我作为一个JS新手。的JavaScript不是在FF和IE

我写一个简单的(?)脚本,显示我一个textarea下(这是指写短信)有多少个字符的短信目前已经离开了,我有多少短信至今写的。

我有我的头下面的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,经过一天繁琐的搜索后,我无法找到解决方案。 :)

回答

3

你并不需要包括 javascript:在您的textarea的处理器属性:

虽然上面是真实的,你的问题是通过使用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'; 
} 
+0

这是真实的,具有[标号](https://developer.mozilla.org/en/JavaScript/Reference/Statements/label)没有环是完全没有意义的...但它不会破坏任何东西。 – Quentin 2012-03-31 11:08:53

+0

@Quentin - 很对,是的。我认为我应该在发布后检查。 – shanethehat 2012-03-31 11:11:26

+0

事实上,这修复了FF问题(为什么FF不能处理InnerText?)。现在只剩下iE了。到达那里。 :) 我将删除JavaScript标签。好的提示。谢谢。 – BigBonsai 2012-03-31 11:27:25