【问题标题】:how to call javascript function from client side on anchor click如何在锚点点击时从客户端调用javascript函数
【发布时间】:2012-01-19 07:48:18
【问题描述】:

我有 javascript 函数 sample('textValue') 并且必须在锚点单击时在服务器端调用。我试过下面的代码

string text="xyz";
anchor.Attributes.Add("onclick","javascript:sample('"+text+"');

但文本的值分配不正确。添加编码字符串。视图源中的结果看起来像

javascript:sample('xyz')

但我需要 javascript:sample('xyz')

【问题讨论】:

  • 您使用什么服务器技术?禁用该属性值的转义。
  • @Sergio Tulentsev - 服务器端的 asp.net + c#

标签: javascript asp.net client-side


【解决方案1】:

您使用什么服务器/后端语言? php?你使用任何框架(Zend、CakePHP...)吗?

在 JS 端做这样的事情:

选项 1

<a href="/a_page" onclick="sample('text');">Test</a>

选项 2

<a href="/a_page" id="clicky-clack-link">Test</a>
<script type="text/javascript">
    document.getElementById('clicky-clack-link').onClick = function() {
        sample('test');
    };
</script>

注意:如果您还没有,请查看jQuery

【讨论】:

    【解决方案2】:

    我想知道你是否可以这样做:

    string text="xyz";
    anchor.Attributes.Add("onclick", function(){ sample(text); } );
    

    它有什么作用?好吧,onclick 处理程序接受一个没有参数的函数,对吧?也就是说,如果有人点击链接,做什么。如果您在 HTML 中手动编写代码,您可以使用 javascript:a_statement_goes_here 来描述要运行的代码。我希望浏览器会从中创建一个功能。由于您是在 JavaScript 中分配它,因此您必须自己执行此操作(除非您写出文档 - 这可能有效)并分配函数。但是你还没有这样的函数——你有一个带有参数的sample——因此匿名函数关闭了text参数。

    这是基于假设,上面实际上是客户端代码。如果 JS 不允许您将函数分配给属性,我会感到非常惊讶。事实上,我认为您遇到的问题是 JavaScript 试图变得非常聪明并确保分配一个字符串,将保持一个字符串 - 这就是您的 ' 被编码的原因。

    试一试,告诉我进展如何。哒!

    【讨论】:

    • 这不可能,因为string 不是有效的 JS,function () {} 不是有效的 C#
    • 啊,很好看。好的,我假设这是 JS 客户端代码。你知道他们对假设的看法......
    猜你喜欢
    • 2017-08-30
    • 2017-08-27
    • 1970-01-01
    • 1970-01-01
    • 2015-07-29
    • 2012-11-24
    • 1970-01-01
    • 2021-05-22
    • 2012-06-14
    相关资源
    最近更新 更多