首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要在后面的代码中注册javascript函数,然后调用它

需要在后面的代码中注册javascript函数,然后调用它
EN

Stack Overflow用户
提问于 2014-02-11 14:09:29
回答 3查看 130关注 0票数 0

我有个功能可以滚动到锚上:

代码语言:javascript
复制
function scrollToAnchor(aid) {
    var aTag = $("a[name='" + aid + "']");
    if (aTag.length) {
        $('html,body').animate({
            scrollTop: aTag.offset().top - 100
        }, 'slow');
        aTag.closest('.subpanel').effect("highlight", 5000);
    }
}

HTML

代码语言:javascript
复制
<a id="A2" class="gridLabel" name="Add Action Item">
    <span id="MainContent_Label19" title="Add / Edit an action item.">Add / Edit Action Item</span>
</a>

我必须调用执行某种操作的服务器端事件。一旦操作完成,我需要调用这个scrollToAnchor。我试过这个:

代码语言:javascript
复制
ScriptManager.RegisterClientScriptBlock(this, GetType(), "OpenActions", "$(function(){ 
 function scrollToAnchor(aid) { var aTag = $('a[name=''' + aid + ''']');if (aTag.length) 
{$('html,body').animate({ scrollTop: aTag.offset().top - 100 }, 
'slow');aTag.closest('.subpanel').effect('highlight', 5000);}} $('#tblAction').show(); 
scrollToAnchor('Add Action Item');});", true);

但是,我在console中会出现错误,可能是因为我的' '" "。有人能帮我整理一下这个吗。

我也试过:

代码语言:javascript
复制
ScriptManager.RegisterClientScriptBlock(this, GetType(), "OpenActions", "$(function()
{function scrollToAnchor(aid) { var aTag = $('a[name=\"' + aid + '\"]' + ']');if 
(aTag.length) {$('html,body').animate({ scrollTop: aTag.offset().top - 100 }, 
'slow');aTag.closest('.subpanel').effect('highlight', 5000);}} $('#tblAction').show(); 
scrollToAnchor('Add Action Item');});", true);
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-02-11 14:11:51

问题似乎就在这里:

代码语言:javascript
复制
'a[name=''' + aid + ''']'

试着将其替换为:

代码语言:javascript
复制
'a[name=' + aid + ']'

或者如果您需要名称值中的引号:

代码语言:javascript
复制
'a[name=\'' + aid + '\']'
// Or
'a[name=\"' + aid + '\"]'
票数 1
EN

Stack Overflow用户

发布于 2014-02-11 14:13:52

我要做的是将函数放在页面(或页面加载的js文件中),然后简单地注册一个脚本,如下所示:

代码语言:javascript
复制
    ScriptManager.RegisterClientScriptBlock(this, GetType(), 
"OpenActions", "scrollToAnchor('Add Action Item');", true);

据我所知,您不需要在每个服务器端事件上注册整个脚本。您只需要使用给定的参数来运行该函数。

票数 1
EN

Stack Overflow用户

发布于 2014-02-11 14:13:08

以@作为字符串的前缀,如下所示

代码语言:javascript
复制
 ScriptManager.RegisterClientScriptBlock(this, GetType(), "OpenActions", @"$(function(){ 
 function scrollToAnchor(aid) { var aTag = $('a[name=' + aid + ']');if (aTag.length) 
{$('html,body').animate({ scrollTop: aTag.offset().top - 100 }, 
'slow');aTag.closest('.subpanel').effect('highlight', 5000);}} $('#tblAction').show(); 
scrollToAnchor('Add Action Item');});", true);
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21704179

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档