Javascript数组变量的行为不一样

时间:2013-12-05 22:40:09

标签: javascript xml

Javascript代码将XML本地文件读入数组变量arrTst。它适用于Firefox 25.0.1,我可以在调试器中看到arrTst值。我在使用这个arrTst时遇到了问题。示例显示警告。

如果我交换警戒线(首先显示arrTest),则不会显示警报。

任何人都可以解释为什么在交换线路时不显示警报?

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<inData>
    <record>
        <date>2012-08-01</date>
        <amount>7</amount>
    </record>
    <record>
        <date>2012-08-02</date>
        <amount>22</amount>
    </record>
</inData>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html">
<script type="text/javascript" src="jquery-1.10.2.js"> </script>
<title>test read XML file</title>
</head>

<body>
<h1 >Test XML</h1>
<div id="TstMsgArea"></div>

<script type="text/javascript">
var str1="";
var arrTst=[];
var arrCon=[["2013-08-01", 1], ["2013-08-02",33]];

$(document).ready(function(){ 
 /*******************************************************************
 * read xml file from local filesystem & push to array
 *******************************************************************/ 
     $.get("test.xml",{},function(xml){
        $('record',xml).each(function(i) {
            _date = $(this).find("date").text();                
            _amount = parseInt($(this).find("amount").text());

            var X0=[];
            X0.push(_date);
            X0.push(_amount);
            arrTst.push(X0);

            alert (str1);
            str1+=_date +", "+_amount+"; ";
            $("#TstMsgArea").append(str1);
        });
    }); 
/*******************************************************************
 * check array values - if lines swapped no go !
 *******************************************************************/ 
    alert ("arrConst : " + arrCon[0][0]+", " + arrCon[0][1]+";    " + arrCon[1][0]+", " + arrCon[1][1]); 
    alert ("arrTest : " + arrTst[0][0]+", " + arrTst[0][1]+"; " + arrTst[1][0]+", " + arrTst[1][1]);

});  //$(document).ready
</script>
</body>
</html>

1 个答案:

答案 0 :(得分:1)

您的提醒信息错误。您需要将置于成功函数中,或者在 函数中调用的其他函数中。

此外,您不应在成功函数之外声明str1arrTst。这些是你在该函数中构建的值,并且它们不会在它之外可用。

如果要在代码中的其他位置使用这些变量,则需要将使用它们的代码放在某个函数中。从$.get()成功函数内部调用该函数,并将变量作为参数传递给它。然后,您可以确保数据准备就绪。

var arrCon=[["2013-08-01", 1], ["2013-08-02",33]];

$(document).ready(function(){ 
 /*******************************************************************
 * read xml file from local filesystem & push to array
 *******************************************************************/ 
     $.get("test.xml",{},function(xml){
        var str1="";
        var arrTst=[];
        $('record',xml).each(function(i) {
            _date = $(this).find("date").text();                
            _amount = parseInt($(this).find("amount").text());

            var X0=[];
            X0.push(_date);
            X0.push(_amount);
            arrTst.push(X0);

            alert (str1);
            str1+=_date +", "+_amount+"; ";
            $("#TstMsgArea").append(str1);
        });
        alert ("arrConst : " + arrCon[0][0]+", " + arrCon[0][1]+";    " + arrCon[1][0]+", " + arrCon[1][1]); 
        alert ("arrTest : " + arrTst[0][0]+", " + arrTst[0][1]+"; " + arrTst[1][0]+", " + arrTst[1][1]);
    });

});  //$(document).ready