通过Javascript中的参数传递变量

Passing variables through parameters in Javascript

本文关键字:参数传递 变量 Javascript 通过      更新时间:2023-09-26

这里有一块代码,我一直在通过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);
} 

getHoliday的前两个参数直到过程的后期才被使用。我想首先用数组foo中的数据加载getHoliday,以便将来可以使用foo,如下所示。一旦我的断点到达getHoliday,脚本就会停止,所以我认为是参数出错了。我想指出的是,ppdd什么都不是,只是空的未定义参数的占位符。

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;
}

根据您提供的信息,最好的猜测是:代码中是否有var foo?Javascript没有块级别的作用域,这些作用域被提升到函数的顶部,var foo lower可能会改变你的foo值。