在href中为标记调用两个javascript函数

时间:2013-12-16 09:17:00

标签: c# javascript

我正在尝试这样做:

<a id="seeAll" onclick="stopClickEffect(event)" href='
<%# 
  String.Format("javascript:PositionPopup("#MapPos", this);ShowMap(\"{0}\",\"{1}\",\"{2}\");",   
  Eval("LONGTITUDE").ToString(),Eval("LATITUDE").ToString(),Eval("CASA_NAME").ToString()) 
%>'
class="see_all colored_font">[Show map]</a>

但我收到错误预处理程序指令必须显示为一行中的第一个非空白字符

我该如何解决这个问题?

5 个答案:

答案 0 :(得分:2)

String.Format前面的#告诉C#预处理器这是一个预处理器指令,如#region asdf#endregion

因为你用#标记了这一行,所以它被解释为这样一个指令。而且由于#之后的空白,你会收到此错误消息。

要清洁,请从href中删除#,你应该没问题。

答案 1 :(得分:0)

应该是这样的

<a href = 'http://localhost/abc/' onclick = 'return test()' >

和javascript功能

function test(){

   //you code
   return false // this will not allow href to go to another page

   return true // let href go to another page
}

答案 2 :(得分:0)

如果我没弄错的话,您应该能够将href属性中的代码放在一个单独的JS函数中,您可以在该函数之外定义该函数。然后,您可以从标记中调用该函数,而不是将所有代码放在那里。

这应该可以让您更轻松地解决问题,并使您的代码更具可读性。

答案 3 :(得分:0)

我不相信JavaScript或HTML有预处理器指令;但是,c#确实如此。

如果你正在做一些与c#相关的事情,我想象给你错误的代码不在你链接的行上。预处理程序指令以#开头,通常位于c#代码的顶部。

错误在于您在使用预处理程序指令的行上#之前没有任何内容。如果此行是导致问题的行,则可能是“&lt;%#string”部分。删除该哈希标记,然后重试。

答案 4 :(得分:0)

首先,您不应将Javascript代码放在href属性中。仅使用onclick处理程序。从HTML / Javascript的角度来看,在那里放置多个函数是没有问题的:

<a href="#" onclick="stopClickEffect(event);PositionPopup('#MapPos', this);ShowMap('...');return false;">...</a>

错误来自c#代码,我猜你必须逃避代码中的#"。 String.Format转义描述为here。你使用这样的双花括号:"{{...}}"

我不确定stopClickEffect函数是做什么的,但也许你甚至可以在return false处理程序的末尾onclick时将其遗漏。