Как объявить локальный вар глобальный - PullRequest
0 голосов
/ 31 июля 2011

Я читаю данные из сетки и, судя по всему, не могу найти способ заставить локальную переменную работать глобально. Я недавно получил некоторую помощь и, похоже, у меня все еще есть проблемы. Я разместил небольшую часть кода для вашей справки и был бы признателен, если бы кто-то мог проверить его и сказать мне, где я иду не так? Я объявил 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 ]

4 голосов
/ 31 июля 2011

Да, это ...

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 голос
/ 31 июля 2011

Вам нужно назвать переменную "titleitem", а не "$ titleitem" в вашей функции "action".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...