javascript setAttribute, getAttribute 不兼容问题

javascript setAttribute, getAttribute 不兼容问题


 
 
 
 

测试环境(客户端浏览器 )
ie6,ie7, ie8兼容模式, ie8
firefox 3.6.8, google chrome 5.0.375.125

先来说明两个函数的标准定义。
elementnode.setattribute(name,value)
name 必需。规定要设置的属性名。
value 必需。规定要设置的属性值。
该方法把指定的属性设置为指定的值。如果不存在具有指定名称的属性,该方法将创建一个新属性。

elementnode.getattribute(name)
name 必需。规定从中取得属性值的属性。

一、setattribute的问题
elementnode为<tr>...</tr>

希望对其增加一个单击行的事件处理函数,
写法1:
table1row1.setattribute("onclick", "selectrow1(this)");
ie8, firefox, google chrome 能正确触发click 事件
ie6,ie7则不能触发click 事件。
写法2:
table2row1.onclick = function() { selectrow2(this) };
所有测试浏览器均能触发click 事件

故为了兼容在不同的ie中,我们可以统一使用如下语句。
table2row1.onclick = function() { selectrow2(this) };


二、getattribute的问题
elementnode为 <tr>...</tr>
先用setattribute设置属性
table1row1.setattribute("level", 1);
再用getattribute来获取标签的属性值
var level = table1row1.getattribute("level");
alert("table1row1 level:" + level + " typeof(level) = " + (typeof (level)).tostring());
在ie6,7 中显示

table1row1 level:1
typeof(level) = number

在ie8, firefox, google chrome中显示

 

table1row1 level:1
typeof(level) = string
为统一处理此两种情况,代码统一如下:
复制代码 代码如下:

var level = table1row1.getattribute("level");
if (level === undefined || level == null) {
level = "0";
}


level = level.tostring();
if (level.trim() == "") {
level = "0";

 

 

或者使用ajax方法
$addhandler 是sys.ui.domevent.addhandler 的快捷方式,它的语法为:
$addhandler(element, eventname, handler);
element 公开事件的 dom 元素。
eventname 事件的名称。
handler 要添加的事件处理程序。
前面的语句可以写成这样:
$addhandler(row,"click", function() { selectrow(this) });
下面为测试的html代码
复制代码 代码如下:

<!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>test</title>
<script type="text/ 网页特效" language=" 网页特效">
function pageload() {
var table1row1 = document.getelementbyid("table1row1");
table1row1.setattribute("level", 1);
table1row1.setattribute("onclick", "selectrow1(this)");
var table1row2 = document.getelementbyid("table1row2");
table1row2.setattribute("level", 2);
table1row2.setattribute("onclick", "selectrow1(this)");
var table2row1 = document.getelementbyid("table2row1");
table2row1.setattribute("level", 3);
table2row1.onclick = function() { selectrow2(this) };
var table2row2 = document.getelementbyid("table2row2");
table2row2.setattribute("level", 4);
table2row2.onclick = function() { selectrow2(this) };
}
var currentselectrow1 = null;
function selectrow1(newselectrow) {
if (currentselectrow1 != null) {
currentselectrow1.style.backgroundcolor = '#ffffff';
}
newselectrow.style.backgroundcolor = 'peachpuff';
currentselectrow1 = newselectrow;
}
var currentselectrow2 = null;
function selectrow2(newselectrow) {
if (currentselectrow2 != null) {
currentselectrow2.style.backgroundcolor = '#ffffff';
}
newselectrow.style.backgroundcolor = '#ff0000';
currentselectrow2 = newselectrow;
}
function button1_click() {
var table1row1 = document.getelementbyid("table1row1");
var level = table1row1.getattribute("level");
var desc1 = "table1row1 level:" + level + " typeof(level) = " + (typeof (level)).tostring();
alert(desc1);
var onclick1 = table1row1.getattribute("onclick");
var desc2 = "table1row1 onclick:" + onclick1.tostring() + " typeof(onclick) = " + (typeof (onclick1)).tostring();
alert(desc2);
}
function button2_click() {
var table2row1 = document.getelementbyid("table2row1");
var level = table2row1.getattribute("level");
var desc1 = "table2row1 level:" + level + " typeof(level) = " + (typeof (level)).tostring();
alert(desc1);
var onclick1 = table2row1.onclick;
var desc2 = "table2row1 onclick:" + onclick1.tostring() + " typeof(onclick) = " + (typeof (onclick1)).tostring();
alert(desc2);
}
</script>
</head>
<body οnlοad="pageload();">
<div style="width: 600px">
<span>table1</span>
<table cellspacing="0" rules="all" border="1" id="table1" style="border-width: 1px;
border-style: solid; width: 100%; border-colla ps教程 教程e: collapse;">
<tr id="table1row0">
<td align="center" style="width: 50%;">
no.
</td>
<td align="center" style="width: 50%;">
item
</td>
</tr>
<tr id="table1row1">
<td align="center" style="width: 50%;">
1
</td>
<td align="left" style="width: 50%;">
2c.40e80.041
</td>
</tr>
<tr id="table1row2">
<td align="center" style="width: 50%;">
2
</td>
<td align="left" style="width: 50%;">
4l.013y2.003
</td>
</tr>
</table>
<input type="button" id="button1" οnclick="return button1_click();" />
</div>
<div style="width: 600px">
<br />
<span>table2</span>
<table cellspacing="0" rules="all" border="1" id="table2" style="border-width: 1px;
border-style: solid; width: 100%; border-collapse: collapse;">
<tr id="table2row0">
<td align="center" style="width: 50%;">
no.
</td>
<td align="center" style="width: 50%;">
item
</td>
</tr>
<tr id="table2row1">
<td align="center" style="width: 50%;">
1
</td>
<td align="left" style="width: 50%;">
4g.0qe18.001
</td>
</tr>
<tr id="table2row2">
<td align="center" style="width: 50%;">
2
</td>
<td align="left" style="width: 50%;">
2k.61209.208
</td>
</tr>
</table>
<input type="button" id="button2" οnclick="return button2_click();" />
</div>
</body>
</html>
 

转载于:https://www.cnblogs.com/seeley/p/3416257.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值