javascript神级求助 innerHTML和function([object Object]) 30

我需要动态生成一个userList每个user的name要动态拼成varfastLine=newObject();//fastLine里面的属性也是动态的,请对比f1和f... 我需要动态生成一个userList 每个user的name要动态拼成
var fastLine = new Object();
//fastLine里面的属性也是动态的,请对比f1和f2用的set,这是一个大对象.

function1(){
fastLine.id=1;
fastLine.ip=192.168.0.1;
for(){//循环次数动态
innerHTML += "<a onclick='delete("+fastLine+")' />";"

}
}

function2(){
fastLine.name='中国电信';

fastLine.ip=127.0.0.1;
for(){//循环次数动态
innerHTML += "<a onclick='delete("+fastLine+")' />";"
}
}

$(div).innerHTML=innerHTML;

这样写遇见的问题是:在页面中这样显示
<div>
<a onclick="delete([object Object])" /a>

........

</div>

delete方法在超级多的地方用我一定要写成公用方法,因为后台走的是同一套代码,只是根据参数不同执行不同.

所有的钱都给你们.帮帮忙
展开
 我来答
百度网友4f3fc44
2013-03-16 · TA获得超过3003个赞
知道小有建树答主
回答量:659
采纳率:50%
帮助的人:358万
展开全部
首先,有几个问题要明确:
1. 给 oneElement.innerHTML 赋值,会将值原样输出在 oneElement 的后代节点处
2. 用 + 连接字符串时,会自动进行类型转换,基本类型都转换为其值对应的字符串,而引用类型会先调用其 toString() 方法返回一个字符串,Object 类型此时返回的就是“[object Object]”

在你的程序中 fastLine 是 Object,也就是说 "<a onclick='delete("+fastLine+")' />" 相当于 "<a onclick='delete("+fastLine.toString()+")' />" 连接后就变成了 “<a onclick='delete([object Object])' />” ,所以在 HTML 中输出的就是这样一个奇怪的字符串。
如果你想在 HTML 的 onclick 事件绑定的函数中使用一个全局的 Object 作为参数,应该这样写:
str_innerHTML += "<a onclick='delete(fastLine)' > ... </a>"
更多追问追答
追问
str_innerHTML += " ... "

这样写.fastLine.name这样的赋值就不会生效
追答
delete() 的定义是什么?这个是你自己定义的函数,还是 ECMAScript 中原生的 delete 操作符?
扎俊
2013-03-16 · 知道合伙人互联网行家
扎俊
知道合伙人互联网行家
采纳数:366 获赞数:1525
涉猎C#;C++,vb,vb script,asp,PHP,JS,w3c,网站运营、推广等

向TA提问 私信TA
展开全部
你好,你的这句
="<a onclick='delete("+fastLine+")' />";"
的意思是将falstLine这个对象的返回值(即已经执行后的结果)delete掉,而不是将fasrLine对象delete掉。
Object() 的实例返回的都是[object Object]。
下面这个例子可以帮助你理解这种运行机制:

//------------------------
var f=function (){
this.id=55;
this.p=23;
return "ready!"
}()
function aa(){
this.name="aa";
}
function bb(){
this.ip="127.0.0.1";
}
function a(s){
alert(s);
}
document.write("<a href='javascript:void(0);' id='a1' onclick='"+f+"'>asdasd</a>");

//-------------------------------------------
当你查看源代码是你就会发现,输出来的是
<a href='javascript:void(0);' id='a1' onclick='ready!'>asdasd</a>"。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
heyan12127
2013-03-17 · TA获得超过804个赞
知道答主
回答量:274
采纳率:0%
帮助的人:199万
展开全部
fastLine.name赋值不生效解决:fastLine.prototype.name = "中国电信";
你这样写试试。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wang_family
2013-03-16
知道答主
回答量:10
采纳率:0%
帮助的人:5.7万
展开全部
你把对象当成字符串处理了!
WANGERN说的很详细,你仔细看看就明白了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式