如何在字符串中传递字符串

时间:2018-05-03 21:26:13

标签: javascript string onclick

我生成一个包含如下链接的表格行:

"<td>"+table.rows[i].c[0].v+"<a href='#' onclick='loadForm("+table.rows[i].c[2].v+")'>&nbsp;&nbsp;My Link</a></td>" +

table.rows[i].c[2].v = 'my stuff'

然而,在检查中它生成像

<a href="#" onclick="loadForm(my stuff)">&nbsp;&nbsp;My Link</a>

哪个不起作用,因为'我的东西'没有引号围绕它使它成为一个字符串。在这种情况下如何让我的东西成为一个字符串?

谢谢!

2 个答案:

答案 0 :(得分:0)

简短回答:在参数的字符串中加上引号,使用反斜杠\进行转义:

"<td>"+table.rows[i].c[0].v+"<a href='#' onclick='loadForm(\""+table.rows[i].c[2].v+"\")'>&nbsp;&nbsp;My Link</a></td>" +

答案很长:不要使用字符串构建HTML元素,效率低,维护性差。相反,使用标准DOM函数:

var td = document.createElement('td');
var a = document.createElement('a');
a.href = '#';
a.onclick = function() { loadForm(table.rows[i].c[2].v); }
a.textContent = '  My Link';
td.appendChild(a);

...然后您可以使用appendChild()td附加到其所属的行。我知道它更长,看起来更麻烦,但它很多更容易调试和维护。还有像jQuery这样的库可以帮助它更快更容易。我绝对建议花时间和精力来阅读它。谷歌“HTML DOM”和环顾四周的教程,MDN通常有很好的东西。

答案 1 :(得分:0)

我认为Template Literal可以在这里工作:

`<td> ${table.rows[i].c[0].v}<a href='#' onclick='loadForm("${table.rows[i].c[2].v}")'>&nbsp;&nbsp;My Link</a></td>`