1

我在向 Request.HTML 函数添加提示时遇到了一些麻烦。我有一个 div 每 30 秒刷新一次它的内容。返回的内容有一系列类名为“.liveReader”的 div。

这是我必须启动内容的 JS

            window.addEvent('domready', initLiveContent);

            function initLiveContent()
            {
                    var tips = new Tips('.liveReader');
                    (function() { refreshPanel() }).periodical(30000);
                    refreshPanel();
            }

            function refreshPanel()
            {
                    var myRequest = new Request.HTML({
                             url: '/inc/liveFeed.aspx',
                             update: $('liveContent'),
                             method: 'get',
                             onComplete: function() {
                                 tips.attach('.liveReader');
                             }
                    });
                    myRequest.send();
            }

所以HTML是

<div id="liveContent">
    <div id="item1" class="liveReader" title="item 1"><p>Text 1</p></div>
    <div id="item2" class="liveReader" title="item 2"><p>Text 2</p></div>
</div>

然而,我所看到的只是正常的工具提示标题!有任何想法吗?!!

4

1 回答 1

2

您的问题在于变量范围。

您的onComplete处理程序使用对 的引用tips,而此变量是initLiveContent函数的本地变量。因此,onComplete调用失败。

所以,第一个提示(没有双关语):总是从一个实际的调试器开始,并将其设置为在所有异常时中断。否则,由于错误(“未定义变量tips”)是从回调中抛出的,它不会出现在标准控制台中。

然后,有两种方法可以修复您的代码:

  1. 创建tips一个共享变量。例如,您可以在作为调用的第二个参数的函数中声明它window.addEvent,然后在回调initLiveContentonComplete回调中引用它。

  2. 更多 Mooish :) 使用元素存储从更新的容器中动态检索您的Tips实例。那是:

    function initLiveContent()
    {
        var tips = new Tips('.liveReader');
            // … your previous code …
        $('liveContent').store('tip', tips);    
    }
    
    function refreshPanel()
    {
        var destination = $('liveContent');
        var myRequest = new Request.HTML({
            update: destination,
                // … your previous code …
            onComplete: function() {
                destination.retrieve('tip').attach('.liveReader');
            }
        });
        myRequest.send();
    }
    

:)

于 2011-10-28T21:13:38.020 回答