2013-11-15 55 views
0

我在Hrefs上查了很多,但无法获得相关的信息。在锚标记的href属性中执行javascript

我试图做到这一点在后面的代码实际上是一个自定义的控件类

writer.Write("<a href='javascript:document.location.href?" + filter.ParameterName + "=" + filter.QueryValue + "'>" + filter.UserVisibleValue + "</a>|&nbsp;"); 

现在这个让我像这样的上述锚悬停“document.location.href?测试一个= 2013 '当我点击它,这会引发一个明显的javascript错误'SyntaxError:missing:in conditional expression',因为它将它作为条件运算符,因此找到:missing。

我只是想要document.location.href(当前url)应该被计算出来,并把值放在我使用它的地方。

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

+0

除了可能与否,你为什么要这么做?只需使用一个功能。它看起来和读取比内联废话更舒适! – CaptainCarl

+0

这不是它的工作原理。当您使用“javascript:”作为href值的前缀时,以下所有内容都被视为JavaScript代码并被执行。你想要的是使用与当前页面相同的URL作为base +一些查询字符串。对? – Chandranshu

+0

是的,但这些是在foreach循环中生成的锚的数量,并且每个锚将在控件类中动态创建不同的查询字符串 – tariq

回答

0

试试这个:

writer.Write("<a href='javascript:window.location = document.location.href?" + filter.ParameterName + "=" + filter.QueryValue + "'>" + filter.UserVisibleValue + "</a>|&nbsp;"); 

注意根据需要,否则的JavaScript将变得无效,你可能有逃避值。为了证明上述方法可行,您可以在任何HTML页面中复制粘贴以下简单示例并查看它的工作方式:

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

相同的结果不起作用 – tariq

+0

我建议首先尝试第二个例子,答案非常简单。你可以把它放在HTML中,并看到它的工作。至少会证明基本概念有效。然后看看你在href中动态生成的值是多少。很可能你并没有逃避某些角色,所以JavaScript变得无效。为了进行调试,我强烈建议在函数中添加上面的基本代码,然后使用Chrome开发工具在那里设置断点。 – ShitalShah