在锚定标记的href属性内执行javascript

在锚定标记的href属性内执行javascript,javascript,jquery,html,Javascript,Jquery,Html,我检查了很多关于Hrefs的信息,但没有找到相关的信息 我试图在代码隐藏中实现这一点,它实际上是一个自定义控件类 writer.Write("<a href='javascript:document.location.href?" + filter.ParameterName + "=" + filter.QueryValue + "'>" + filter.UserVisibleValue + "</a>|&nbsp;"); writer.Write(“|”)

我检查了很多关于Hrefs的信息,但没有找到相关的信息

我试图在代码隐藏中实现这一点,它实际上是一个自定义控件类

writer.Write("<a href='javascript:document.location.href?" + filter.ParameterName + "=" + filter.QueryValue + "'>" + filter.UserVisibleValue + "</a>|&nbsp;");
writer.Write(“|”);
现在,这让我在锚定“document.location.href?Test one=2013”上方悬停时看到类似的内容,当我单击它时,会抛出一个明显的javascript错误“SyntaxError:missing:in conditional expression”,因为它将其作为一个条件运算符,并因此找到:missing

我只想计算document.location.href(当前url)并将值放在我使用它的位置

我知道我可以简单地调用javascript函数,并在该函数中设置href,但我可以这样做吗?

试试这个:

writer.Write("<a href='javascript:window.location = document.location.href?" + filter.ParameterName + "=" + filter.QueryValue + "'>" + filter.UserVisibleValue + "</a>|&nbsp;");
writer.Write(“|”);
请注意,您可能需要根据需要转义值,否则JavaScript将变得无效。为了证明上述方法有效,您可以在任何HTML页面中复制粘贴以下更简单的示例,并查看其是否有效:

<a href="javascript:window.location=window.location + '?a=5'">bla</a>


除非有可能或没有;你为什么想要它?只需使用一个函数。它看起来和读起来比内联垃圾要舒服得多!这不是它的工作原理。当您使用“javascript:”作为href值的前缀时,后面的所有内容都将被视为javascript代码并执行。您想要的是使用与当前页面相同的URL作为基+一些查询字符串。是吗?是的,但这些是在foreach循环中生成的许多锚,每个锚将在控件内动态创建不同的查询字符串。我建议首先尝试答案中的第二个示例,这非常简单。你可以把它放在HTML中,然后看到它在工作。这至少可以证明这个基本概念是有效的。然后查看您在href中动态生成的值。很可能您没有转义某些字符,因此JavaScript变得无效。为了调试它,我强烈建议将上述基本代码放入函数中,然后使用Chrome开发工具在其中设置断点。