Javascript在FF上不起作用
我有下面的代码,它在IE中非常适合textarea元素 (ed:为便于阅读而包装)Javascript在FF上不起作用,javascript,ajax,firefox,javascript-events,Javascript,Ajax,Firefox,Javascript Events,我有下面的代码,它在IE中非常适合textarea元素 (ed:为便于阅读而包装) 它调用一个验证函数: <script language="Javascript"><!--Counter for Message Box --> maxL=100; var bName = navigator.appName; function taLimit(taObj) { if (taObj.value.length==maxL) return false; r
它调用一个验证函数:
<script language="Javascript"><!--Counter for Message Box -->
maxL=100;
var bName = navigator.appName;
function taLimit(taObj) {
if (taObj.value.length==maxL) return false;
return true;
}
function taCount(taObj,Cnt) {
objCnt=createObject(Cnt);
objVal=taObj.value;
if (objVal.length>maxL) objVal=objVal.substring(0,maxL);
if (objCnt) {
if(bName == "Netscape"){
objCnt.textContent=maxL-objVal.length;}
else{objCnt.innerText=maxL-objVal.length;}
}
return true;
}
function createObject(objId) {
if (document.getElementById) return document.getElementById(objId);
else if (document.layers) return eval("document." + objId);
else if (document.all) return eval("document.all." + objId);
else return eval("document." + objId);
}
</script>
maxL=100;
var bName=navigator.appName;
函数taLimit(taObj){
if(taObj.value.length==maxL)返回false;
返回true;
}
函数taCount(taObj,Cnt){
objCnt=createObject(Cnt);
objVal=taObj.value;
如果(objVal.length>maxL)objVal=objVal.substring(0,maxL);
if(objCnt){
如果(bName==“Netscape”){
objCnt.textContent=maxL objVal.length;}
else{objCnt.innerText=maxL objVal.length;}
}
返回true;
}
函数createObject(objId){
if(document.getElementById)返回document.getElementById(objId);
否则,如果(文件层)返回eval(“文件”+objId);
否则,如果(document.all)返回eval(“document.all.”+objId);
否则返回eval(“文件”+objId);
}
以上所有内容仅适用于IE。在Firefox上,它甚至不会关注方框。事件处理程序的属性都是小写的;您是否尝试过onkeyup而不是onkeyup,等等?事件处理程序的属性都是小写的;您是否尝试过onkeyup而不是onkeyup,等等?一些提示:
- 不要使用language=“javascript”,它已被弃用
- 不要使用
进行属性访问,这既慢又不必要eval
- 不要嗅探“Netscape”,而是检查属性/方法是否存在/符合性(innerText/textContent)
- 不要将接收元素的方法命名为“createObject”,这会产生误导
- 不要执行未声明的赋值(
),这很容易出错maxL=100
- 按照惯例,不要将非构造函数(或命名空间)的变量名大写
- 尽量不要在全局范围内声明函数,以避免名称冲突
- 不要使用language=“javascript”,它已被弃用
- 不要使用
进行属性访问,这既慢又不必要eval
- 不要嗅探“Netscape”,而是检查属性/方法是否存在/符合性(innerText/textContent)
- 不要将接收元素的方法命名为“createObject”,这会产生误导
- 不要执行未声明的赋值(
),这很容易出错maxL=100
- 按照惯例,不要将非构造函数(或命名空间)的变量名大写
- 尽量不要在全局范围内声明函数,以避免名称冲突
- 几点提示:
希望这就是你要找的 这里有一个更好的脚本来计算文本区域中的字符数:
希望这就是你要找的 在使用JavaScript进行任何开发之前,请先阅读此处不引人注目的JavaScript
以后你会多次感谢我的 在使用JavaScript进行任何开发之前,请先阅读此处不引人注目的JavaScript
以后你会多次感谢我的 作为旁注:调用最后一个函数“createObject”有点误导,因为你不是在创建任何东西,而是在“获取”它。我不知道你所说的“不会聚焦于方框”是什么意思,就我所知,你没有在任何地方调用focus()。你是说如果你点击它?它的标签?对我有用。。。怀疑错误在其他地方,不允许将光标放置在textarea元素内或编辑其内容。只适用于IEA作为旁注:调用最后一个函数“createObject”有点误导,因为你不是在创建任何东西,而是在“获取”它。我不知道你所说的“不会聚焦在盒子上”是什么意思,就我所知,你没有在任何地方调用focus()。你是说如果你点击它?它的标签?对我有用。。。怀疑错误在其他地方,不允许将光标放置在textarea元素内或编辑其内容。仅适用于iSomeOne似乎已编辑了该问题,使属性全部小写。浏览器不会对这些属性进行不同的分析。这些是HTML标记,不区分大小写。onKeyPress和onKeyUp是html属性而不是javascript。这取决于您使用的
DOCTYPE
。不过,您对HTML文档类型的看法是正确的。似乎有人已经编辑了该问题,使属性现在全部小写。浏览器不会对这些属性进行不同的解析。这些是HTML标记,不区分大小写。onKeyPress和onKeyUp是html属性而不是javascript。这取决于您使用的DOCTYPE
。不过,您对HTML doctype的看法是完全正确的。所有这些都是好的方面,而且几乎所有这些都可能解释了一些不太有效的地方。实际上,“T.J.Crowder”通过实现“Kangax”第一个指针并简单地将脚本选项更改为type=“text/javascript”解决了这个问题。工作正常。如果你没有帮助,请不要垃圾贡献者,而是学习。谢谢“袋鼠”!所有这些都是好的,几乎所有这些都可以解释一些不太好用的东西。实际上“T.J.Crowder”通过实现“Kangax”第一个指针并简单地将脚本选项更改为type=“text/javascript”解决了这个问题。工作正常。如果你没有帮助,请不要垃圾贡献者,而是学习。谢谢“袋鼠”!谢谢你,埃米尔,现在不用了。这是一个错误的脚本标记属性。谢谢Emil,现在不需要了。这是一个错误的脚本标记属性。
<script language="Javascript"><!--Counter for Message Box -->
maxL=100;
var bName = navigator.appName;
function taLimit(taObj) {
if (taObj.value.length==maxL) return false;
return true;
}
function taCount(taObj,Cnt) {
objCnt=createObject(Cnt);
objVal=taObj.value;
if (objVal.length>maxL) objVal=objVal.substring(0,maxL);
if (objCnt) {
if(bName == "Netscape"){
objCnt.textContent=maxL-objVal.length;}
else{objCnt.innerText=maxL-objVal.length;}
}
return true;
}
function createObject(objId) {
if (document.getElementById) return document.getElementById(objId);
else if (document.layers) return eval("document." + objId);
else if (document.all) return eval("document.all." + objId);
else return eval("document." + objId);
}
</script>