使用onClick in HTML链接传递多个值

时间:2012-11-08 08:49:25

标签: javascript html

您好我正在尝试使用HTML onclick函数传递多个值。我使用Javascript创建表

var user = element.UserName;
var valuationId = element.ValuationId;
$('#ValuationAssignedTable').append('<tr> <td><a href=# onclick="return ReAssign(\'' + valuationId + ',' + user + '\')">Re-Assign</a> </td>  </tr>');

但是在我的Javascript函数中,userName是未定义的,valuId是一个包含valuId和UserName组合的字符串

function ReAssign(valautionId, userName) {
    valautionId;
    userName;

}

8 个答案:

答案 0 :(得分:33)

如果valuationIduser是JavaScript变量,并且源代码是纯静态HTML,不是通过任何方式生成的,那么您应该尝试:

<a href=# onclick="return ReAssign(valuationId,user)">Re-Assign</a>

如果它们是从PHP生成的,并且它们包含字符串值,请使用每个变量的转义引用,如下所示:

<?php
    echo '<a href=# onclick="return ReAssign(\'' + $valuationId + '\',\'' + $user + '\')">Re-Assign</a>';
?>

逻辑类似于问题中的更新代码,它使用JavaScript生成代码(可能使用jQuery?):不要忘记将转义的引号应用于每个变量:

var user = element.UserName;
var valuationId = element.ValuationId;
$('#ValuationAssignedTable').append('<tr> <td><a href=# onclick="return ReAssign(\'' + valuationId + '\',\'' + user + '\')">Re-Assign</a> </td>  </tr>');

故事的寓意是

'someString(\''+'otherString'+','+'yetAnotherString'+'\')'

将评估为:

someString('otherString,yetAnotherString');

您需要:

someString('otherString','yetAnotherString');

答案 1 :(得分:9)

解决方案:使用onclick为JS中生成的html传递多个参数

  

对于在JS中生成的html,请执行以下操作(我们使用单引号作为   字符串包装器)。   每个参数都必须包含在单引号中   所有你的论点都会被视为一个单一的论点   functionName('a,b'),现在是一个值为a,b的单个参数。

     

我们必须使用字符串转义字符反斜杠()来关闭第一个参数   使用单引号,在两者之间给出一个分隔符逗号,然后用a开始下一个参数   单引号。 (这是使用'\',\''

的神奇代码

<强> 实施例

$('#ValuationAssignedTable').append('<tr> <td><a href=# onclick="return ReAssign(\'' + valuationId  +'\',\'' + user + '\')">Re-Assign</a> </td>  </tr>');

答案 2 :(得分:1)

请试试这个

for static values--onclick="return ReAssign('valuationId','user')"
for dynamic values--onclick="return ReAssign(valuationId,user)"

答案 3 :(得分:1)

model.Manager

答案 4 :(得分:0)

那是因为你将字符串传递给函数。只需删除引号并传递实际值:

<a href=# onclick="return ReAssign(valuationId, user)">Re-Assign</a>

猜猜ReAssign函数应该返回truefalse

答案 5 :(得分:0)

function ReAssign(valautionId, userName) {
   var valautionId 
   var userName 
 alert(valautionId);
 alert(userName);
  }

<a href=# onclick="return ReAssign('valuationId','user')">Re-Assign</a>

答案 6 :(得分:0)

这里有一些事情......

如果你想在onc​​lick事件发生时调用一个函数,你只需要函数名称和参数。

然后,如果你的参数是一个变量(它们看起来像是),那么你就不需要它们的引号。不仅如此,如果这些是全局变量,您还需要添加“窗口”。在那之前,因为那是包含所有全局变量的对象。

最后,如果这些参数不是变量,则您需要排除斜杠以转义这些字符。由于onclick的值由双引号括起,因此单引号不会成为问题。所以你的答案看起来像这样......

<a href=# onclick="ReAssign('valuationId', window.user)">Re-Assign</a>

如果您想要的不仅仅是快速解决方案,还有一些需要注意的事项。

您似乎试图使用+运算符来组合HTML中的字符串。 HTML是一种脚本语言,所以当你编写它时,整个事情只是一个字符串本身。你可以从现在开始跳过这些,因为它不是你的浏览器将运行的代码(只是一大堆东西,任何已经存在的东西都是浏览器特有的含义)。

接下来,您正在使用一个锚标记/链接,它实际上并没有将用户带到另一个网站,只是运行一些代码。我会使用除锚标记之外的其他东西,使用适当的CSS将其格式化为您想要的样子。这实际上取决于设置,但在很多情况下,span标签都可以。给它一个类(比如class =“runjs”)并为此设置CSS规则。要让它模仿链接的行为,请使用:

.runjs {
    cursor: pointer;
    text-decoration: underline;
    color: blue;
}

这可以省略你未使用的href属性。

最后,您可能希望使用JavaScript来设置此链接的onclick属性的值,而不是手写它。它通过使页面代码与页面结构分开来保持页面清洁。在您的课程中,您可以更改所有这些链接......

var links = document.getElementsByClassName('runjs');
for(var i = 0; i < links.length; i++)
    links[i].onclick = function() { ReAssign('valuationId', window.user); };

虽然这在一些旧的浏览器中不起作用(因为getElementsByClassName方法),但它只有三行,并且正是您正在寻找的。这些链接中的每一个都有一个与它们相关联的匿名函数,这意味着除了该标记的onclick值之外,它们没有任何与它们相关的变量。另外,如果你愿意的话,你可以用这种方式包含更多行代码,所有这些代码都放在一个整洁的位置。

答案 7 :(得分:0)

用反引号(`)括住每个参数

示例:

<button onclick="updateById(`id`, `name`)">update</button>

function updateById(id, name) {
   alert(id + name );
   ...
}