为了账号安全,请及时绑定邮箱和手机立即绑定

如何在小部件外部调用变量

如何在小部件外部调用变量

Cats萌萌 2023-10-24 17:04:48
您好,我有一个带有 javascript 代码和一个名为 的变量的 html 小部件snapAuthor,但是当我调用该变量时,控制台告诉我它没有找到它,这是工具代码:<b:widget id='LinkList7' locked='false' title='Joker Template' type='LinkList' visible='true'><b:includable id='AUTH'><b:if cond='data:widget.instanceId == &quot;LinkList500&quot;'><b:tag name='script' type='text/javascript'><b:loop values='data:links' var='link'>AuthorsInfo[&#39;<data:link.name/>&#39;]=&#39;<data:link.target.jsEscaped/>&#39;;</b:loop></b:tag><b:else/><b:tag name='script' type='text/javascript'>(function(){var snapAuthor=AuthorsInfo.filter(function(a){return a.name===&#39;<data:title/>&#39;})[0];if(snapAuthor!==undefined){snapAuthor.provided=true;<b:loop values='data:links' var='link'><b:if cond='data:link.name contains &quot;-ad&quot;'>snapAuthor[&#39;<data:link.name/>&#39;]=&#39;<data:link.target.jsEscaped/>&#39;;<b:else/><b:switch var='data:link.name'><b:case value='rank'/>snapAuthor.rank=&#39;<data:link.target.escaped/>&#39;;<b:case value='about'/>snapAuthor.about=&#39;<data:link.target.escaped/>&#39;;<b:default/>snapAuthor.links[&#39;<data:link.name/>&#39;]=&#39;<data:link.target/>&#39;;</b:switch></b:if></b:loop>}})();</b:tag></b:if><b:tag name='script' type='text/javascript'>console.log(snapAuthor);</b:tag></b:includable></b:widget>请注意,我想从页面上的其他位置调用该变量,但控制台告诉我它没有找到它......
查看完整描述

1 回答

?
喵喵时光机

TA贡献1846条经验 获得超7个赞

在代码中使用立即调用函数表达式可以防止变量在其范围之外可见 (function(){})()


尝试这个


<b:widget id='LinkList7' locked='false' title='Joker Template' type='LinkList' visible='true'>


    <b:includable id='AUTH'>

        <b:if cond='data:widget.instanceId == "LinkList500"'>

            <b:tag name='script' type='text/javascript'>

                <b:loop values='data:links' var='link'>AuthorsInfo['<data:link.name/>']='<data:link.target.jsEscaped/>';</b:loop>

            </b:tag>

        <b:else/>

            <b:tag name='script' type='text/javascript'>


                var snapAuthor=AuthorsInfo.filter(function(a){return a.name==='<data:title/>'})[0];

                if(snapAuthor!==undefined){snapAuthor.provided=true;


                    <b:loop values='data:links' var='link'>


                        <b:if cond='data:link.name contains "-ad"'>

                            snapAuthor['<data:link.name/>']='<data:link.target.jsEscaped/>';

                        <b:else/>

                            <b:switch var='data:link.name'>

                                <b:case value='rank'/>snapAuthor.rank='<data:link.target.escaped/>';

                                <b:case value='about'/>snapAuthor.about='<data:link.target.escaped/>';

                                <b:default/>snapAuthor.links['<data:link.name/>']='<data:link.target/>';

                            </b:switch>

                        </b:if>


                    </b:loop>   

                }


            </b:tag>

        </b:if>


            <b:tag name='script' type='text/javascript'>

            console.log(snapAuthor);

            </b:tag>

    </b:includable>


</b:widget>


查看完整回答
反对 回复 2023-10-24
  • 1 回答
  • 0 关注
  • 66 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信