如何使用HTML onclick事件发送两个参数?

时间:2017-03-28 16:22:29

标签: javascript html javascript-events

我有这个事件将ID参数发送到生成URL的函数,但我想发送两个参数而不仅仅是ID。我也想发送这个名字。

使用此代码我只能发送一个参数,但我需要发送两个。
根据传递一个参数的this other post,我尝试了以下内容:

 '<li id="link4"><a href="#" onclick="generateURL(\'' + jsonObject.id + '\');">Line</a></li>'

这是生成我的网址的方法

function generateURL(id, name)
{
    window.location.href = 'https://www.example'+ id + name + '.com';
 }

换句话说,我试图模仿这个:

<a href="#" onclick="generateURL(jsonObject.id, jsonObject.name)></a>

如果我试试这个:

'<li id="link4"><a href="#" onclick="generateURL(\'' + jsonObject.id + ',' + jsonObject.name + '\');">Line Name</a></li>'

发生这种情况:

Not receiving the NAME parameter

3 个答案:

答案 0 :(得分:1)

这两个参数被串联成一个单独的字符串文字 - 所以如果你检查那个元素或在源代码中找到它,它应该如下所示:

<a href="#" onclick="generateURL('1337,testName');">Line Name</a> 

一种解决方案是在逗号前后添加转义单引号(即\'):

'<li id="link4"><a href="#" onclick="generateURL(\'' + jsonObject.id + '\',\'' + jsonObject.name + '\');">Line Name</a></li>';

观察1 st 列表中的链接与下面示例中2 nd 列表中的链接之间的差异:

&#13;
&#13;
var jsonObject = {
  name: 'testName',
  id: 1337
};
document.addEventListener('DOMContentLoaded', function() {
  var liHTML = '<li id="link4"><a href="#" onclick="generateURL(\'' + jsonObject.id + ',' + jsonObject.name + '\');">Line Name</a></li>';
  document.getElementById('theList').innerHTML = liHTML;
  liHTML = '<li id="link5"><a href="#" onclick="generateURL(\'' + jsonObject.id + '\',\'' + jsonObject.name + '\');">Line Name</a></li>';
  document.getElementById('theOtherList').innerHTML = liHTML;
});

function generateURL(id, name) {
  console.log('generateURL() - id: ', id, 'name: ', name);
}
&#13;
1<sup>st</sup>List: <ul id="theList"></ul>
2<sup>nd</sup>List: <ul id="theOtherList"></ul>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

您将一个连续字符串作为第一个参数id传递给generateURL(id,name),而不是传递两个单独的参数idname。换句话说,这些是您使用的参数:

id: \'' + jsonObject.ln_org_code + ',' + jsonObject.ln_name + '\'

name: (因此屏幕截图中未定义name的原因)

要解决此问题,只需从两个参数之间的逗号中删除引号即可。此逗号分隔idname,并将jsonObject.ln_org_code注册为ID,将jsonObject.ln_name注册为名称。此外,请注意第一个正斜杠上的刻度线位置。就个人而言,我不会在函数调用之前连接字符串。

换句话说,这是函数调用的外观。

<li id="link4"><a href="#" onclick="generateURL(('\' + jsonObject.ln_org_code), (jsonObject.ln_name + '\'));">Arranque de Linea</a></li>

答案 2 :(得分:0)

从两个参数之间的逗号中删除引号。此逗号分隔ID和名称,并将jsonObject.ln_org_code注册为id,jsonObject.ln_name作为名称。此外,请注意第一个正斜杠上的刻度线位置。就个人而言,我不会在函数调用之前连接字符串。

以下是函数调用的外观。

<li id="link4"><a href="#" onclick="generateURL(('\' + jsonObject.ln_org_code), (jsonObject.ln_name + '\'));">Arranque de Linea</a></li>