Преобразовать объект {Key: Value} в стандартные переменные с помощью jQuery - PullRequest
0 голосов
/ 01 августа 2010

Я даю вам то, что я хочу в PHP:

foreach($myarray as $key=>$value) { ${$key} = $value; }

Теперь мы можем сделать это с помощью JS / jQuery?

Это входные данные jQuery, я хочу, чтобы в качестве ключа использовалось значение classTD, другими словами, эквивалент известного оператора PHP $ {$ key} в приведенном выше примере:

data  = {};
$('#resul_rech_doc_fact tr.document-2 td').each(function(index) {
var classTD = $(this).attr('class');
var contentTD = $(this).text();
data = $.extend(data , { classTD : contentTD });
});

Ответы [ 5 ]

3 голосов
/ 01 августа 2010

Линия:

data = $.extend(data , { classTD : contentTD });

Не делает то, что вы ожидаете. Это идентично:

data = $.extend(data , { 'classTD' : contentTD });

Кажется, вы хотите оценить classTD и использовать его в качестве ключа объекта. У вас есть два варианта:

Вы можете назначить элемент data, изменив data:

data[classTD] = contentTD;

или вы можете использовать $.extend с временным объектом:

var obj = { };
obj[classTD] = contentTD;
data = $.extend(data, obj);
3 голосов
/ 01 августа 2010

Если вы хотите преобразовать массив PHP в объект в Javascript - вы можете использовать функцию:

http://php.net/manual/en/function.json-encode.php

Пример из руководства:

// PHP
$arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);
$js = json_encode($arr);
echo $js;

// output
{"a":1,"b":2,"c":3,"d":4,"e":5} 

Таким образом, вы можете использовать PHP для "эха" $js переменной, чтобы инициализировать ваш JavaScript, например.

Для итерации по свойствам объекта JS вы можете использовать:

http://www.w3schools.com/js/js_loop_for_in.asp

Пример:

for (key in objectInstance)
{
  alert(objectInstance[key]); // value
}
1 голос
/ 01 августа 2010

Я думаю, что вы хотите:

data  = {};
$('#resul_rech_doc_fact tr.document-2 td').each(function(index) {
  data[$(this).attr('class')] = $(this).text();
});

Если вы хотите создать глобальные переменные, вы можете установить poperties для объекта window (но я бы не рекомендовал его):

$('#resul_rech_doc_fact tr.document-2 td').each(function(index) {
  window[$(this).attr('class')] = $(this).text();
});

Тогда, если, например, у вас есть класс с именем 'foo', вы можете получить доступ к 'foo' как к «глобальной переменной». Опасность заключается в том, что вы можете очень легко перезаписать важные свойства объекта окна.

0 голосов
/ 01 августа 2010

Для всех веб-целей глобальная область действия = окно, поэтому:

window['foobar'] = 'bar';
alert(foobar);

Следовательно (не рекомендуется):

var json = {'foobar':'bar'};
for i in json {
    window[i] = json[i];
}
alert(foobar);
0 голосов
/ 01 августа 2010

Ну, вы можете использовать with, но with считается вредным :

var obj = { bar: 'foo' };

with (obj) {
    alert(bar); // 'foo'
}

alert(bar); // undefined

Если вам нужен цикл, вы можете сделать это:

var obj = { bar: 'foo' };
var key, value;

with (obj) {
    for (key in obj) {
        if (!obj.hasOwnProperty(key)) {  // Never forget this check!
            continue;
        }

        value = obj[key];

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