调用JS代码,传过去的参数为啥变成了[OBJECT],而不是值类型呢?怎么解决啊,求高手!!!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了调用JS代码,传过去的参数为啥变成了[OBJECT],而不是值类型呢?怎么解决啊,求高手!!!相关的知识,希望对你有一定的参考价值。

调用JS代码,完成JSP页面动态添加删除页面元素,可是调用删除元素的方法的时候,传过去的参数变成了[OBJECT],导致取不到页面的元素。求原因!!!
--js代码
var i=0;
function removeElement(id)

alert(id);
document.getElementById(id).parentNode.removeChild(document.getElementById(id));
document.getElementById('btn'+i).parentNode.removeChild(document.getElementById('btn'+i));

document.getElementById('br'+i).parentNode.removeChild(document.getElementById('br'+i));

i--;

function addElement(textnode,parent,element_type,element_name,changeLine,other_info,delete_info)

if(document.uniqueID)
//IE

var form1=document.getElementById(parent);

var node=document.createTextNode(textnode);

var id=element_name+i;

form1.appendChild(node);

var _new_doc_num = document.createElement("<input type='"+element_type+"' name='"+element_name+"' "+other_info+" id='"+id+"'/>");

form1.appendChild(_new_doc_num);

if(delete_info=="y")

var _move = document.createElement("<input type='button' name='delete' value='delete' id='btn"+i+"' onclick='removeElement("+id+")'/>");

form1.appendChild(_move);

if(changeLine=="y")

var _br=document.createElement("<br id='br"+i+"'/>");
form1.appendChild(_br);

var _hidden=document.createElement("<input type='hidden' name='hidden' id='hidden_"+i+"' value='"+element_type+"'/>");
i++;
else
//Non_IE


--页面元素代码
<tr><td><input type="button" name="addElement" onclick="addElement('String','form1','text','string','y','','y')" value="添加String"/></td>

参考技术A 这里错了

var _move = document.createElement("<input type='button' name='delete' value='delete' id='btn"+i+"' onclick='removeElement("+id+")'/>");

改成

var _move = document.createElement("<input type='button' name='delete' value='delete' id='btn"+i+"' onclick='removeElement(\""+id+"\")'/>");

调用的时候少了 引号 导致 字符串变成不存在的变量了本回答被提问者采纳
参考技术B 传过去的参数变成了[OBJECT]的情况在下会情况发生
比如
var name = document.getElementById(“name”);
当页面中名字为name的tag有1个以上的时候name的值是[OBJECT]
alert(name.length);会输出他的长度
以此长度循环输出name[i].value会得到相应的值

希望对你有所帮助
参考技术C 如果你是采集别人的网站的内容那就没有办法了或者你把js文件的内容也输出 script 改成 include . 我倒是有种生成静态网页的方法!!需要的话追问

没采集别人的网站的内容。改成INCLUDE方法,跟放在页面里面,效果应该一样的把。

以上是关于调用JS代码,传过去的参数为啥变成了[OBJECT],而不是值类型呢?怎么解决啊,求高手!!!的主要内容,如果未能解决你的问题,请参考以下文章

js 循环拼接字符串里调用function里传对象参数

vue路由传参当刷新页面时,参数变成“[object Object]”

vue路由传参当刷新页面时,参数变成“[object Object]”

C#线程调用方法时,怎么传参数过去

为啥跳转 的php文件获得不到传的参数

当我们将对象作为参数传递给方法时,为啥会调用复制构造函数?