2011-09-12 78 views
1

我试着使用内部HTML和动态集,其中包含一个变量一个onclick声明:报价中的报价变量?

cell5.innerHTML="<input type='button' value='Remove' onclick='removerow('manual_" + (num) + "')' />" 

因此,可以说num变量设置为4输出应该onclick="removerow('manual_4')"

任何帮助吗?

+0

您是否必须为事件处理程序使用HTML属性?如果您从JS设置处理程序,则此问题不存在。 –

回答

2

可以使用\转义嵌套的报价:

"...onclick=\"removerow('manual_" + (num) + "')\"..." 
+0

完美。我在11分钟内接受。 –

+0

请考虑阅读Felix答案,这就是DOM元素应该如何插入到DOM中。 –

+0

@Jose Faeti我这样做了,并且认为它更好,尽管这个答案是针对“嵌套引号”问题的。 –

0

可以使用\

逃脱引号所以

onclick=\"removerow('manual_" + (num) + "')\"

1
cell5.innerHTML='<input type="button" value="Remove" onclick="removerow(\'manual_' + (num) + '\')" />' 
4

最好的事情是避免所有这一切:

var input = document.createElement('input'); 
input.type = 'button'; 
input.value = 'Remove'; 
input.onclick = function() { 
    removerow('manual_' + num); 
}; 

cell5.appendChild(input); 

根据按钮,单元格和要删除的行之间的关系,还可以在处理程序中执行DOM遍历以获取对该行的引用。

+1

+1这是处理DOM元素的正确方法。 –

+0

@Felix是的,我后来意识到这是一个正确和更有效的方法,但在这一点上,它只是太多的努力来改变,我没有时间(这一个输入是一行的一部分​​部分这是通过javascript) –

+0

@Jonah:无论什么最适合你,只是显示替代品,不用担心:) –

0

请考虑使用click事件。它使这种事情更清晰:

$(".cell5") // whatever selector you want 
    .html('<input type="button" value="Remove"/>') 
    .click(function(){ 
    removerow('manual_' + row); 
    }); 

也考虑使用行号作为输入,而不是字符串。如果它们都具有相同的形式,你可以只用简化的东西:

removerow(row); 

显然这是一个API的设计决定的,但如果它是有道理的,将简化这个表达式。