我有一个数据源,我无法改变,数据源包含一个带有Id的超链接,我可以使用它来检索我需要的数据。我创建了一个方法来转换超链接以调用javascript函数并从超链接传递擦除的id,但是我没有得到正确的结果。在当前状态下,除了将id var插入ClickIt方法之外,一切正常。对于此示例,id的值为djb137,当我单击新超链接时,返回的错误是'djb137未定义。我是否忽略了将参数传递给javascript函数的事情?
private string ScrubHref(string statementHtml)
{
string pattern = "href.*?\"(?<href>.*?)\"";
return Regex.Replace(statementHtml, pattern, delegate(Match match)
{
string v = match.ToString();
string id = Regex.Match(v, "\"([^\"]*?)\"").Groups[1].Value;
string returnValue = "href=\"#\"" + "onclick=\"return ClickIt("+id+");\"";
return returnValue;
});
}
有趣的是,如果我将retrunValue字符串更改为此
return v + "onclick=\"return ClickIt(this.href);\"";
然后我的javascript函数将整个href传递给它而没有问题。但我只需要Id而不是整个href。
答案 0 :(得分:1)
您需要在将ID传递给函数调用时引用您的ID。
该行
string returnValue = "href=\"#\"" + "onclick=\"return ClickIt("+id+");\"";
应该是
string returnValue = "href=\"#\"" + "onclick=\"return ClickIt('"+id+"');\"";
正在发生的事情是它认为djb137
是一个变量名,如果你没有以这种方式构建它们,请考虑方法调用的外观。以下
return ClickIt(djb137); // looks like a variable identifier
return ClickIt('djb137'); // passing a string to the function call
答案 1 :(得分:1)
更改此行:
string returnValue = "href=\"#\"" + "onclick=\"return ClickIt("+id+");\"";
到
string returnValue = "href=\"#\"" + "onclick=\"return ClickIt('"+id+"');\"";
请注意其中的其他引号。