将参数作为字符串传递,在javascript的onclick函数中包含空格

Passing parameter as a string containg white spaces in javascript's onclick function

本文关键字:onclick javascript 函数 空格 包含 参数 字符串      更新时间:2023-09-26
"<button onclick=editRecords('" + partId + "')>Add Quantity</button>";

如果我传递不带空格的partId字符串,它工作正常。但是如果我通过'MRF 01',它给了我

未捕获的语法错误:意外令牌非法。

为什么会这样,我该如何解决?

每当将空格作为函数参数传递时,都使用 &nbsp;。如果您使用 js 生成 onclick,请使用 encodeURIComponent。

"<button onclick=editRecords('" + encodeURIComponent(partId) + "')>Add Quantity</button>";

来自海报本人。这是一个主要基于意见的答案,使用单引号没有什么传统(我发现了 C 语法,现在我更喜欢双引号......

我宁愿改变引号的组织以获得更干净的代码。这将使它更具可读性以及更传统(在我看来):

var msg = 'Sometimes SO looks like a McDonalds drive through.';
var html = '<button onclick="clickHandler(''' + msg + ''')">click me</button>';
function clickHandler (msg) { alert(msg); }
document.body.innerHTML = html;

更传统的是遵循菲利克斯·克林的智慧(最后一行)。

如果 HTML 属性值应该包含一个空格,则必须使用引号来分隔该值。

请注意此处的语法突出显示:

<span foo=bar baz ></span>

这是一个属性foo,值为 "bar",布尔属性baz

另一方面,这

<span foo="bar baz"></span>

是值为 "bar baz" 的属性foo。注意到baz是如何以不同的方式突出显示的吗?

若要解决此问题,请在 onclick 的值两边加上引号,或者更好的是,使用其他方式绑定事件处理程序。

我建议这是最好的选择。您可以设置所需的任何属性。

var e = document.createElement("span");
e.className = "close-li";
e.setAttribute('aria-hidden', 'true');
e.setAttribute('data-toggle', 'modal');
e.setAttribute('data-target', '#CreateModal');
e.setAttribute("onClick", "FunctionName(" + parameters + ");" );
e.innerText = "×";
$('#id').append(e);  //Id would be the place where you want to append. I used jquery so, I used append

带空格的字符串参数

<input type="button" onClick="return myFunction('10', 'your text hear')" />



带有空格的 PHP 字符串变量

<input type="button" onClick="return myFunction('<?php echo $id ?>', '<?php echo $designation ?>')" />

JS函数

function setVisibility(id, designation) {...your js code hear...}