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方法在超级多的地方用我一定要写成公用方法,因为后台走的是同一套代码,只是根据参数不同执行不同.
所有的钱都给你们.帮帮忙 展开
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方法在超级多的地方用我一定要写成公用方法,因为后台走的是同一套代码,只是根据参数不同执行不同.
所有的钱都给你们.帮帮忙 展开
4个回答
展开全部
首先,有几个问题要明确:
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>"
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 · 知道合伙人互联网行家
关注
展开全部
你好,你的这句
="<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>"。
="<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>"。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
fastLine.name赋值不生效解决:fastLine.prototype.name = "中国电信";
你这样写试试。
你这样写试试。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你把对象当成字符串处理了!
WANGERN说的很详细,你仔细看看就明白了
WANGERN说的很详细,你仔细看看就明白了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询