Стирается массив при выходе из each
Всем приветы! Прошу помочь ...
<?xml version="1.0" encoding="utf-8"?>
<root date="28.08.12">
<mdata date="29.08.12">
<bye>
<b1>1.10</b1>
<b2>1.20</b2>
<b3>1.30</b3>
<b4>1.40</b4>
<b5>1.55</b5>
</bye>
<sell>
<s1>0.00</s1>
<s2>0.00</s2>
<s3>0.00</s3>
<s4>0.00</s4>
<s5>0.00</s5>
</sell>
</mdata>
<mdata date="30.08.12">
<bye> ...
function getRate( ratedate, bs )
{
var i, vname, sss;
var rates = new Array();
var md = $("mdata", xml);
$.each(md, function() {
var m_date = jQuery( this ).attr( 'date' );
if ( m_date == ratedate )
{
for ( i = 1; i < 6; i++ )
{
vname = bs + i;
rates[vname] = jQuery( this ).find( vname ).text();
sss += jQuery( this ).find( vname ).text() + ' + ';
}
return false;
}
});
alert('ratesAll: ' + rates);
alert('sss: ' + sss);
return rates;
}
Вызываю, к примеру так: getRate( '29.08.12', 'b' ); На выходе из each массив rates оказывается пустой - alert('ratesAll: ' + rates) выводит пустоту! Переменная же sss - нормально сохраняет значение. Внутри each массив rates нормально заполняется. В чем ошибка? Бьюсь уже несколько часов - ничего не получается :( Спасибо всем кто откликнется |
замените:
var rates = new Array();на вот это:
var rates = {};
так как массив может содержать только числовые ключи, а вы пытаетесь сохранить именованные. |
либо замените это:
rates[vname] = jQuery( this ).find( vname ).text();на это: rates[ rates.length ] = jQuery( this ).find( vname ).text(); |
Я понял, спасибо. Меня сбил PHP! В JS отсутствуют ассоциативные массивы
|
<script type="text/javascript" src="http://yandex.st/jquery/1.4.4/jquery.min.js"></script>
<?xml version="1.0" encoding="utf-8"?>
<root date="28.08.12">
<mdata date="29.08.12">
<bye>
<b1>1.10</b1>
<b2>1.20</b2>
<b3>1.30</b3>
<b4>1.40</b4>
<b5>1.55</b5>
</bye>
<sell>
<s1>0.00</s1>
<s2>0.00</s2>
<s3>0.00</s3>
<s4>0.00</s4>
<s5>0.00</s5>
</sell>
</mdata>
<mdata date="30.08.12">
<bye> ...
<script type="text/javascript">
function getRate( ratedate, bs )
{
var i, vname, sss;
var rates = [];
var md = $("mdata");
$.each(md, function() {
var m_date = jQuery( this ).attr( 'date' );
if ( m_date == ratedate )
{
for ( i = 1; i < 6; i++ )
{
vname = bs + i;
rates[i]=jQuery( this ).find( vname ).text();
sss += jQuery( this ).find( vname ).text() + ' + ';
}
return false;
}
});
//alert('ratesAll: ' + rates);
alert('sss: ' + sss);
return rates;
}
alert('ratesAll: ' + getRate( '29.08.12', 'b' ));
</script>
|
Цитата:
|
Цитата:
|
| Часовой пояс GMT +3, время: 01:48. |