【问题标题】:Jquery passing a parameter between functionsJquery在函数之间传递参数
【发布时间】:2013-01-28 07:18:31
【问题描述】:

嘿,我想从 jquery 中的函数传递一个参数,但我无法让它工作。我究竟做错了什么?我想将点击函数中的“名称”传递给对话框块函数,以防止代码重复

更新:我在函数后定义了名称。但是我仍然不能像这样传递它

更新 2 jsFiddle 链接http://jsfiddle.net/bbKw8/

            <div id="dialog-block" >
                <p>
                    <b>Friends List:</b>
                    <% =GetFriends(0) %>
                </p>
            </div>
            <div id="Div1">
                <p>
                    <b>Friends List:</b>
                    <% =GetFriends(0) %>
                </p>
            </div>
            <script type="text/javascript">

                // the jQuery document ready handler
                $(function () {
                    var name;
                    // create our dialog
                    $('#dialog-block').dialog({
                        title: '<%=GetUserName(name)%>',
                        autoOpen: false,
                        width: 400,
                        buttons: {
                            "Close": function () {
                                closeDialog($(this))
                            }
                        }
                    });

                    // the button to open the dialog
                    $('#user0chair,#apDiv1').click(function (event) {
                        if (this.id == 'user0chair') {
                            $('#dialog-block').dialog('open');
                            name = 1;
                        }
                        else if (this.id == 'user1chair') {
                            $('#dialog-block').dialog('open');
                        }
                    });

                });

                function closeDialog(elem) {
                    elem.dialog("close");
                }
            </script>

【问题讨论】:

  • 很难理解代码的意图。也许您可以将副本上传到 jsfiddle.net,我们可以尝试看看它的作用?
  • 养成使用关键字var ..定义变量的好习惯,然后放在window ready函数之后
  • 这里是 jsdfiddle 链接jsfiddle.net/bbKw8
  • 您将变量包装为文本!周围有 qouts ,这意味着这是一些文本而不是变量,您应该将行更改为标题:'',我的答案也已更新
  • 停止将服务器代码与 javascript 混合,很多混乱都会消失。它们不在同一环境或同时运行

标签: javascript jquery html css


【解决方案1】:

由于您未能使用var 关键字定义name,因此页面上的任何其他代码已经可以访问它。

除此特殊情况外,变量具有函数范围,因此请在高于需要访问它的两个函数的级别定义var name...

Why you should use 'var'

【讨论】:

  • 只是一个问题.. 不是在函数中声明的变量只能在该范围内工作吗?!!
  • 如果你不是在 V8 的严格模式下(在这种模式下你会得到一个错误),给一个未定义的变量(没有 var 关键字)赋值会将它放到全局对象中。
  • 实际上,由于您的问题更笼统,因此该规则在其他情况下存在;例如闭包(从子函数访问父函数的变量)
  • 谢谢队友!但再次只是为了确认信息,如果我没有用 var 声明变量,那么它不会被限定为我的函数?! (通常)
  • 是的,但您应该始终使用 var。隐式定义的全局变量被认为是不好的做法。您应该始终尽可能明确地表达您的意图,以便其他人甚至您可以阅读并理解您的代码。
【解决方案2】:

就在

之后
 $(function () {

var name ;

解释:

在全局范围内创建变量,然后我们从一个函数中分配它,它可以在外部访问..

您将变量包装为文本!周围有 qouts ,这意味着这是一些文本而不是变量,您应该将行更改为标题:

'<%=GetUserName(' + name + ')%>'

这行意味着将引号之间的任何内容视为文本,当您命名时,只需获取它的值并将其附加到文本中,然后完成文本..

编辑:在这里等一下,你不能将javascript变量传递给服务器端的函数,除了ajax,但不是这样..你应该使用post或get将它发送到服务器,然后从那里获取它并触发函数并返回结果!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多