如何声明local var global

时间:2011-07-31 11:26:04

标签: javascript jquery dialog

我正在从网格中读取数据,而对于我的生活,似乎无法找到一种方法来使本地var全局工作。我最近在这里得到了一些帮助,但似乎仍有问题。我已经发布了一小部分代码供您参考,如果有人可以取消它并告诉我哪里出错了,我将不胜感激?我已经声明了var titleitem ='';在函数之外,需要找到一种使用var = act_item部分代码创建全局变量的方法。我认为省略var,这成为一个全局var,可以在函数之外使用。在这种情况下,var titleitem。然后,这将在对话框中用作标题的一部分。 $('#actionform')。dialog({title:titleitem});

console.log中返回的所有内容都是(空字符串)。

由于

<!--- function to action data -->
<script type="text/javascript">

                var titleitem = '';

</script>
<script type="text/javascript">
function action(com,grid) {


        if(com == 'Action') {
                if( $('.trSelected').length>0 ) {
            var items = $('.trSelected');
                        var itemlist ='';
                        for(i=0;i<items.length;i++){
                            itemlist+= items[i].id.substr(3);
                        }
                var act_id = $("tr.trSelected td:nth-child(1) div").text();
                var act_location = $("tr.trSelected td:nth-child(2) div").text();
                var act_service = $("tr.trSelected td:nth-child(3) div").text();
                var act_activity = $("tr.trSelected td:nth-child(4) div").text();
                var act_department = $("tr.trSelected td:nth-child(5) div").text();
                var act_company = $("tr.trSelected td:nth-child(6) div").text();
                var act_address = $("tr.trSelected td:nth-child(7) div").text();
                var act_user = $("tr.trSelected td:nth-child(8) div").text();
                act_item = $("tr.trSelected td:nth-child(9) div").text();
                $titleitem = act_item;

+++++ UPDATE ++++++

$("#actionform").dialog({
            autoOpen: false,
            resizable: true,
            modal: true,
            title: "Input new intake"+titleitem,
            width: 470,
            beforeclose: function (event, ui) {
                if(flag==1){
                    flag=0;
                    jAlert("You have successfully actioned\n\rBox: "+act_item+"\n\r",
                                                     'New Intake successfull');

                }

                $("#ACT_message").html("");
            },
            close: function (event, ui) {
                $("#ACT_action").get(0).reset();
                $("#ACT_message").html("");

            }

        });

2 个答案:

答案 0 :(得分:4)

是的,这......

act_item = $("tr.trSelected td:nth-child(9) div").text();

...将是全球性的,但我认为最好通过在外部宣布你的函数来明确全局化......

var act_item;
function action(com,grid) {
    ...
}

...或明确地将其设为window ...

的属性
function action(com,grid) {
    ...
    window.act_item = $("tr.trSelected td:nth-child(9) div").text();
}

虽然通常有一个比污染全局命名空间更好的解决方案。

另外,请注意这一点......

$titleitem = act_item;

...是与初始变量名称不同的变量名称,因为它以$开头。

如果您的全局变量无效,请确保在尝试使用它们之前声明/初始化

(您的代码未显示您正在执行的位置$('#actionform').dialog({title : titleitem});。)

答案 1 :(得分:1)

您需要在“动作”功能中将变量命名为“titleitem”而不是“$ titleitem”。