Menu
Woocommerce Menu

jquery如何判断表格同一列不同行input数据是否重复,JavaScript在IE和FF下的兼容性问题

0 Comment

单引号和双引号其实没啥区别,看你自己习惯了

长久以来JavaScript兼容性一直是Web开发者的一个主要问题。在正式规范、事实标准以及各种实现之间的存在的差异让许多开发者日夜煎熬。为此,主要从以下几方面差异总结IE和Firefox的Javascript兼容性:

复制代码 代码如下:

复制代码 代码如下:

复制代码 代码如下:

function hasRepeat(objId,columnIndex){
var arr = [];
$(“#”+objId+” tbody tr”).each(function(){
arr.push( $(“td:eq(“+columnIndex+”)”,this).text() );
});
if( arr.length==$.unique( arr ).length ){
return false;
}else{
return true;
}
}

<input type=”button”
onclick=”alert(“1″)”>——————-不正确
<input type=”button”
onclick=”alert(‘1’)”>——————-正确

一、函数和方法差异;
二、样式访问和设置;
三、DOM方法及对象引用;
四、事件处理;
五、其他差异的兼容处理。

//调用
alert( hasRepeat(tableID,列索引)==1?”有重复”:”无重复” );

双引号中再用双引号要这样:
var str = “abc\”def\”ghi”
用反斜杠来禁止解析双引号。

一、函数和方法差异

您可能感兴趣的文章:

  • jQuery
    选择表格(table)里的行和列及改变简单样式
  • jQuery实现冻结表格行和列
  • jQuery实现表格行和列的动态添加与删除方法【测试可用】
  • 基于JQuery的动态删除Table表格的行和列的代码
  • jquery通过select列表选择框对表格数据进行过滤示例
  • jQuery操作表格(table)的常用方法、技巧汇总
  • jQuery表格插件datatables用法总结
  • jQuery实现鼠标可拖动调整表格列宽度
  • JQuery
    表格操作(交替显示、拖动表格行、选择行等)
  • jQuery+CSS实现的table表格行列转置功能示例

下面是我摘录的,希望对你有用:

  1. getYear()方法

在一个网页中的按钮,写onclick事件的处理代码,不小心写成如下:

【分析说明】先看一下以下代码:

复制代码 代码如下:

复制代码 代码如下:

<input value=”Test” type=”button” onclick=”alert(“”OK””);” />

var year= new Date().getYear(); 
document.write(year);

IE提示出错后,再漫不经心地改为:

在IE中得到的日期是”2010″,在Firefox中看到的日期是”110″,主要是因为在
Firefox 里面 getYear 返回的是 “当前年份-1900” 的值。

复制代码 代码如下:

【兼容处理】加上对年份的判断,如:

<input value=”Test” type=”button” onclick=”alert(\”OK\”);” />

复制代码 代码如下:

结果还是出错。
这时,我就想不通了,虽然我知道最直接的解决方法是写成这样:

var year= new Date().getYear(); 
year = (year<1900?(1900+year):year); 
document.write(year); 

复制代码 代码如下:

也可以通过 getFullYear getUTCFullYear 去调用:

<input value=”” type=”button” onclick=”alert(‘OK’);” />

复制代码 代码如下:

但为什么javascript中的转义字符\没有效果了呢?

var year = new Date().getFullYear(); 
document.write(year);

后来找到一段正常的代码:

  1. eval()函数

复制代码 代码如下:

【分析说明】在IE中,可以使用eval(“idName”)或getElementById(“idName”)来取得id为idName的HTML对象;Firefox下只能使用getElementById(“idName”)来取得id为idName的HTML对象。

<input value=”Test” type=”button” onclick=”alert(“OK”);” />

【兼容处理】统一用getElementById(“idName”)来取得id为idName的HTML对象。

这时才理解,原来这时,还是归于HTML的管辖范围,所以转义字符应该使用HTML的,而不是javascript的。两个双引号的做法是vbScript的,\”这种做法则是javascript的,而HTML的,则是用”,此外还可以使用:”、’。
下面列出各种表达方法:

  1. const声明

复制代码 代码如下:

【分析说明】在 IE 中不能使用 const 关键字。如:

<html>
<body>
<input value=”外双引号内双引号-错误” type=”button”
onclick=”alert(“OK”);” /><br />
<input value=”外单引号内单引号-错误” type=”button”
onclick=’alert(‘OK’);’ /><br />
<input value=”两个双引号-错误” type=”button” onclick=”alert(“”OK””);”
/><br />
<input value=”两个单引号-错误” type=”button” onclick=”alert(”OK”);”
/><br />
<input value=”\+双引号-错误” type=”button”
onclick=”alert(\”OK\”);” /><br />
<input value=”\+单引号-错误” type=”button”
onclick=”alert(\’OK\’);” /><br />
<input value=”外双引号内单引号-OK” type=”button”
onclick=”alert(‘OK’);” /><br />
<input value=”外单引号内双引号-OK” type=”button”
onclick=’alert(“OK”);’ /><br />
<input value=”外部不使用引号-OK” type=”button”
onclick=alert(‘OK’);alert(“OK”); /><br />
<input value=”HTML转义字符”(& # 3 4 ;)-OK” type=”button”
onclick=”alert(“OK”);” /><br />
<input value=”HTML转义字符'(& # 3 9 ;)-OK” type=”button”
onclick=”alert(‘OK’);” /><br />
<input value=”HTML转义字符”(& # x 2 2 ;)-OK” type=”button”
onclick=”alert(‘OK’);” /><br />
<input value=”HTML转义字符'(& # x 2 7 ;)-OK” type=”button”
onclick=”alert(‘OK’);” /><br />
<input value=”HTML转义字符”(& q u o t ;)-OK” type=”button”
onclick=”alert(“OK”);” /><br />
<input value=”HTML转义字符'(& a p o s ;)-IE错误” type=”button”
onclick=”alert(‘OK’);” /><br />
<input value=”其它\\-错误” type=”button”
onclick=”alert(\\”OK\\”);” /><br />
<input value=”其它\& # 3 4 ;-错误” type=”button”
onclick=”alert(\”OK\”);” /><br />
</body>
</html>

复制代码 代码如下:

您可能感兴趣的文章:

  • JavaScript
    限制文本框不可输入英文单双引号的方法
  • js
    单引号替换成双引号,双引号替换成单引号的实现方法
  • JavaScript中的单引号和双引号报错的解决方法
  • js
    赋值包含单引号双引号问题的解决方法
  • Js参数值中含有单引号或双引号问题的解决方法
  • 浅析Js中的单引号与双引号问题
  • js中单引号与双引号冲突问题解决方法
  • 银河国际网址手机版,javascript
    复杂的嵌套环境中输出单引号和双引号
  • 关于JavaScript的单双引号嵌套问题

const constVar = 32;

在IE中这是语法错误。

【兼容处理】不使用 const ,以 var 代替。

  1. var

【分析说明】请看以下代码:

复制代码 代码如下:

echo=function(str){ 
document.write(str); 

这个函数在IE上运行正常,Firefox下却报错了。

【兼容处理】而在echo前加上var就正常了,这个就是我们提到var的目的。

  1. const 问题

【分析说明】在 IE 中不能使用 const 关键字。如 const constVar = 32;
在IE中这是语法错误。

【解决方法】不使用 const ,以 var 代替。

二、样式访问和设置

  1. CSS的”float”属性

【分析说明】Javascript访问一个给定CSS
值的最基本句法是:object.style.property,但部分CSS属性跟Javascript中的保留字命名相同,如”float”,”for”,”class”等,不同浏览器写法不同。

在IE中这样写:

复制代码 代码如下:

document.getElementById(“header”).style.styleFloat = “left”;

在Firefox中这样写:

复制代码 代码如下:

document.getElementById(“header”).style.cssFloat = “left”; 

【兼容处理】在写之前加一个判断,判断浏览器是否是IE:

复制代码 代码如下:

if(document.all){ // 
  document.getElementById(“header”).style.styleFloat = “left”; 

else{ //非ie 时为undefined 
  document.getElementById(“header”).style.cssFloat = “left”; 

  1. 访问<label>标签中的”for”

【分析说明】和”float”属性一样,同样需要使用不现的句法区分来访问<label>标签中的”for”。

在IE中这样写:

复制代码 代码如下:

var myObject = document.getElementById(“myLabel”); 
var myAttribute = myObject.getAttribute(“htmlFor”);

在Firefox中这样写:

复制代码 代码如下:

var myObject = document.getElementById(“myLabel”); 
var myAttribute = myObject.getAttribute(“for”);

【兼容处理】解决的方法也是先 判断浏览器类型。

  1. 访问和设置class属性

【分析说明】同样由于class是Javascript保留字的原因,这两种浏览器使用不同的
JavaScript 方法来获取这个属性。
IE8.0之前的所有IE版本的写法:

复制代码 代码如下:

var myObject = document.getElementById(“header”); 
var myAttribute = myObject.getAttribute(“className”);

适用于IE8.0 以及 firefox的写法:

复制代码 代码如下:

var myObject = document.getElementById(“header”); 
var myAttribute = myObject.getAttribute(“class”);

另外,在使用setAttribute()设置Class属性的时候,两种浏览器也存在同样的差异。

复制代码 代码如下:

setAttribute(“className”,value);

这种写法适用于IE8.0之前的所有IE版本,注意:IE8.0也不支持”className”属性了。

setAttribute(“class”,value);适用于IE8.0 以及 firefox。

【兼容处理】

方法一,两种都写上:

复制代码 代码如下:

var myObject = document.getElementById(“header”); 
myObject.setAttribute(“class”,”classValue”); 
myObject.setAttribute(“className”,”classValue”); 
 //设置header的class为classValue

方法二,IE和FF都支持object.className,所以可以这样写:

复制代码 代码如下:

var myObject = document.getElementById(“header”); 
myObject.className=”classValue”;//设置header的class为classValue

标签:,

发表评论

电子邮件地址不会被公开。 必填项已用*标注

相关文章

网站地图xml地图