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

Joh*_*erk 16 html javascript

嗨我试图通过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>');
Run Code Online (Sandbox Code Playgroud)

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

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

}
Run Code Online (Sandbox Code Playgroud)

ppe*_*rka 33

如果valuationIduser是JavaScript的变量,源代码是纯静态的HTML,不以任何方式产生的,你应该尝试:

<a href=# onclick="return ReAssign(valuationId,user)">Re-Assign</a>
Run Code Online (Sandbox Code Playgroud)

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

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

逻辑类似于问题中的更新代码,它使用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>');
Run Code Online (Sandbox Code Playgroud)

这个故事的寓意是

'someString(\''+'otherString'+','+'yetAnotherString'+'\')'
Run Code Online (Sandbox Code Playgroud)

将被评估为:

someString('otherString,yetAnotherString');
Run Code Online (Sandbox Code Playgroud)

而你需要:

someString('otherString','yetAnotherString');
Run Code Online (Sandbox Code Playgroud)


San*_*eev 9

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

对于在JS中生成的html,请执行以下操作(我们使用单引号作为字符串包装器).每个参数都必须用单引号括起来,否则你的所有参数都会被认为是像functionName('a,b')这样的单个参数,现在它是一个值为a,b的单个参数.

我们必须使用字符串转义字符反斜杠()来用单引号关闭第一个参数,在它们之间给出一个分隔符逗号,然后用单引号启动下一个参数.(这是使用的魔法代码'\',\'')

例:

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