javascript动态创建表格,设置双击事件,传参数时被覆盖为最后一行数据,在线等!有原码

<html><head><title></title><styletype="text/css">.onmouseout1{background-color:#EAF2F... <html>
<head>
<title></title>
<style type="text/css">
.onmouseout1{
background-color:#EAF2FB;
}
.onmouseout2{
background-color:#CDE0F5;
}
.onmousemove{
background-color:#00FF00
}
</style>
<script>
function start() {
/**var allButton=document.getElementsByTagName("input");
alert(allButton);
for(var s=0;s<allButton.length;s++){
var button=allButton[s];
if(button.type="button"){
button.disabled=true;
}
}*/
//获取body标签
var mybody = document.getElementsByTagName("body")[0];
// 创建一个<table>元素和一个<tbody>元素
table1 = document.createElement("table");
mytablebody = document.createElement("tbody");
//创建所有的单元格
myArray = new Array('aaa','bbb','ccc','dddd');
my = new Array('111','2222','3333','4444');
for(var j = 0; j <4; j++) {
// 创建一个<tr>元素
myArray[j] = document.createElement("tr"); //onMouseMove onMouseOut
// mycurrent_row.attachEvent("ondbclick",onclick(j));
myArray[j].onmousemove=function(){onmousemove(this);};
myArray[j].onmouseout=function(){onmouseout(this);};
myArray[j].ondblclick=function(){ondbclick(j);};
for(var i = 0; i <4; i++) {
alert(my[i]);
// 创建一个<td>元素--列
mycurrent_cell = document.createElement("td");
//创建一个文本节点
currenttext = document.createTextNode(my[i]);

mycurrent_cell.appendChild(currenttext);
// 将列<td>添加到行<tr>
myArray[j].appendChild(mycurrent_cell);
}
// 将行<tr>添加到<tbody>
mytablebody.appendChild(myArray[j]);
}
// 将<tbody>添加到<table>
table1.appendChild(mytablebody);
//将<table>添加到<body>
mybody.appendChild(table1);
table1.setAttribute("border", "2");
table1.setAttribute("cellspacing", "3");//无效 ??
table1.setAttribute("cellpadding", "2");//无效 ??
}
function ondbclick(j){
alert(j);
}
function onmousemove(i){
i.className="red";
}
function onmouseout(i){
i.className="blue";
}
</script>
</head>
<body onLoad="start()">
</body>
</html>
展开
 我来答
该问答中所提及的号码未经验证,请注意甄别。
雨月蓝
2013-03-06 · TA获得超过765个赞
知道小有建树答主
回答量:194
采纳率:100%
帮助的人:251万
展开全部
函数对象,在存在参数,或动态变量时,执行时会使用当前值进行操作
上面代码的参数就属于动态型的,运行时调用当前值,自然为4
解决方法
1.即时编译代码(将动态参数变成“死参”)
myArray[j].ondblclick = new Function("ondbclick(" + j + ");");
2.固定参数值(n 的有效区域为 setFun 函数内,所以不受 j 的值的影响)
setFun(myArray[j], j);
function setFun(obj, n) {//该函数定义在最外围,与start() 并列
obj.ondblclick = function () { ondbclick(n); };
}

如果你只是想要当前行的行号的话,建议使用 rowIndex
myArray[j].ondblclick = function () { ondbclick(this); };

function ondbclick(tr) { alert(tr.rowIndex);}

使用 rowIndex 的话,在增减行的时候也不会出错

table1.setAttribute("cellspacing", "3");
使用 js 赋属性的时候,cellspacing 非规范写法,所以会有浏览器兼容问题
其中 s 应为大写,cellSpacing,cellPadding
双单词,第二个单词首字母大写
乌微月2S
2013-03-05 · TA获得超过5037个赞
知道大有可为答主
回答量:5361
采纳率:42%
帮助的人:2865万
展开全部
双击的时候弹出4的问题?你这么写到哪儿就应该是4啊。
myArray[j] = document.createElement("tr"); //onMouseMove onMouseOut
myArray[j].id=j;
// mycurrent_row.attachEvent("ondbclick",onclick(j));
myArray[j].onmousemove=function(){onmousemove(this);};
myArray[j].onmouseout=function(){onmouseout(this);};
myArray[j].ondblclick= function(){ondbclick(this.id);};
加个id属性,存一下值就好了。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
悲伤地今天
2013-03-05 · TA获得超过158个赞
知道小有建树答主
回答量:396
采纳率:22%
帮助的人:101万
展开全部
ai
联系我,我给你demo呀:815083620
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式