这个js函数有什么问题?

时间:2013-10-14 15:10:52

标签: javascript

以下是我脚本的一部分:

function create(panel_id,iframe_source,handle_title) {
 var temp1=document.createElement("a");
 temp1.setAttribute("href","#");
 var attr=document.createAttribute("onClick");
 attr.nodeValue="showPanel(panel_id)";
 temp1.setAttributeNode(attr);
 temp1.className="controller";
 temp1.innerHTML=handle_title;
 div.appendChild(temp1);
}
function showPanel(panel_id) {
 var elem = document.getElementById(panel_id);
 elem.classList.toggle("show");
}

这是我调用第一个函数的部分:

<a href="#" onClick="create('test','http://example.com','example')">create</a>

当我调用它时,除了onClick属性之外,每个元素都是正确创建并且正常工作。我注意到当我改变这样的函数时:

...
attr.nodeValue="showPanel('test')";
...

一切都很好。有人能告诉我我做错了什么吗?

2 个答案:

答案 0 :(得分:6)

变化:

attr.nodeValue="showPanel(panel_id)";

为:

attr.nodeValue="showPanel('" + panel_id + "')";

答案 1 :(得分:0)

有两个问题

1)onClick应该是onclick

2)"showPanel(panel_id)";应为

"showPanel('" + panel_id + "')";

试试这个

function create(panel_id,iframe_source,handle_title) {
 var temp1=document.createElement("a");
 temp1.setAttribute("href","#");
 var attr=document.createAttribute("onclick");
 attr.nodeValue="showPanel('" + panel_id + "')";
 temp1.setAttributeNode(attr);
 temp1.className="controller";
 temp1.innerHTML=handle_title;
 div.appendChild(temp1);
}
function showPanel(panel_id) {
 var elem = document.getElementById(panel_id);
 elem.classList.toggle("show");
}