无法在超链接中传递数组值

时间:2011-12-01 16:42:36

标签: javascript jquery asp.net

以下是我在Jquery上使用的代码,用于在sharepoint disp表单上选择超链接时传递值。

for(var i=0;i<retval.length;i++)
{
 strHTML = strHTML +  "<a href='url.aspx?ID= '+retval[i]+' &Source= url'>" + retval[i] + "</a>";
 strHTML = strHTML + " ";
 }

  strHTML = strHTML + "</div>";


   $("textarea[Title='Test']").closest("span").find("iframe[Title='Rich Text Editor']").contents().find("body").html(strHTML); 

它无法读取retval [i]中的值,它在ID处正确。语法错了吗?

3 个答案:

答案 0 :(得分:0)

如果您想要对变量进行评估,则需要在引号的外部(与实际超链接的文本一样):

strHTML = strHTML + "<a href='url.aspx?ID=" + retval[i] + "&source=url ...";

但是,在将其放入网址之前,我会考虑使用encodeURIComponent

strHTML = strHTML + "<a href='url.aspx?ID=" + encodeURIComponent(retval[i]) + "&source=url ...";

另外,尽量避免在URL中包含空格(确保变量,等号(=)和值靠得很近)。另外,如果href属性的值被单引号(')包围,您希望避免在URL的中间使用它们(例如,不要包围ID的内容)带有')的网址中的值。

var id = 'foo';

var bad  = "<a href='target.aspx?ID='"+id+"''>Invalid</a>";
//  bad = <a href="target.aspx?ID='foo''>Invalid</a>
// note that the single quotes now interfere

var good = "<a href='target.aspx?ID="+id+"'>Valid</a>";
//  good = "<a href='target.aspx?ID=foo'>Valid</a>";    
// note now that the quotes align and the value is acceptable

答案 1 :(得分:0)

更具可读性:

var atag = "url.aspx?ID="+encodeURIComponenet(retval[i])+"&Source=url";
strHTML = strHTML +  "<a href='"+atag+"'>" + retval[i] + "</a> ";

希望这有帮助!

答案 2 :(得分:0)

由于你有整个字符串的双引号:

"<a href='url.aspx?ID= '+retval[i]+' &Source= url'>"

它读取+ reval [i] +作为字符串的一部分,你要做的是区分字符串和命令。您需要使用双引号来结束字符串并添加命令。您需要将上述内容更改为:

"<a href='url.aspx?ID=" + retval[i] + "&Source=url'>"