0

ここに、Firebug でデバッグしてきたコード ブロックがあります。fooパラメータを関数に渡す方法を知りたいですgetHoliday(param,param,param)。これが私の XMLHttpRequest のコード ブロックです。

if (XMLHttpRequestObject.readyState==4 && XMLHttpRequestObject.status == 200)
{
    var pp = null
    var dd = null
    var xmlResponse = XMLHttpRequestObject.responseXML;
    var foo = new Array();
    foo = parseXML(xmlResponse);
    getHoliday(pp,dd,foo);
} 

の最初の 2 つのパラメーターはgetHoliday、プロセスの後半まで使用されません。getHoliday最初に配列からデータをロードしたいfooので、将来は以下に示すように foo を使用できます。ブレークポイントが getHoliday に到達するとすぐにスクリプトが停止するので、パラメーターが間違っていると思います。指摘したいのは何もppありddません。空の未定義パラメーターのプレースホルダーです。

function getHoliday(monthSelected,theday,names)
{   
    var HolidayName = new Array();
    var holiday = ""
    HolidayName = names;  
    monthSelected = monthSelected + 1;
    for(var index = 0; HolidayName.length >= index; index++)
    {   
        if(HolidayName[index] == monthSelected && HolidayName[index+1] == theday)
        {
            holiday = HolidayName[index+2]
        }
    }
    return holiday
}

ここに降りるとすぐに、names先ほど渡した配列が未定義になります。なんで?以下は、HolidayName配列がどのように見えるかです。

HolidayName = new Array(2,4,"Party--12:00",2,22,"Eventalist Launch--6:00",2,18,"Play Day--12:00",3,17,"Play Day--12:00"););

アラートfooの結果は次のとおりです。

2,4,"Party--12:00",2,22,"Eventalist Launch--6:00",2,18,"Play Day--12:00",3,17,"Play Day--12:00"

ここにparseXMLがあります

function parseXML(xmlData)
{
    var aOutput=document.getElementById("testing2");
    var events = xmlData.getElementsByTagName('year').length;
    for(var i=0;i< events;i++)
    {
        var eYear = xmlData.getElementsByTagName('year')[i].firstChild.nodeValue;
        var eMonth = xmlData.getElementsByTagName('month')[i].firstChild.nodeValue;
        var eDay = xmlData.getElementsByTagName('day')[i].firstChild.nodeValue;
        var eHour = xmlData.getElementsByTagName('hours')[i].firstChild.nodeValue;
        var eMinute = xmlData.getElementsByTagName('minutes')[i].firstChild.nodeValue;
        var eTitle = xmlData.getElementsByTagName('title')[i].firstChild.nodeValue;
        var holiStr = '"' + eTitle + "--" + eHour  +":"+ eMinute + '"';
        setup.push(eMonth,eDay, holiStr);
    }
    return setup;
}
4

1 に答える 1

0

あなたが提供した情報を考えると、最良の推測: コードの下に var foo がありますか? Javascript にはブロック レベルのスコープがなく、これらは関数の先頭に引き上げられ、var foo lower は foo 値を変更する可能性があります。

于 2013-02-27T02:31:26.057 に答える