Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > innerText в Firefox


Автор: Black_leopard 18.2.2007, 18:02
Недавно нашел календарик, он отлично работает в ИЕ, но не работает в Firefox. Помогите исправить функцию fSetSelectedDay и fUpdateCal. 
Код

<script LANGUAGE="JavaScript">

<!-- Begin
var dDate = new Date();
var dCurMonth = dDate.getMonth();
var dCurDayOfMonth = dDate.getDate();
var dCurYear = dDate.getFullYear();
var objPrevElement = new Object();

//на onmouseover и onmouseout даты календаря
function fToggleColor(myElement) {
    var toggleColor = "#ff0000";
    if (myElement.id == "calDateText") {
        if (myElement.color == toggleColor) {
            myElement.color = "";
        } 
        else {
            myElement.color = toggleColor;
        }
    } 
    else if (myElement.id == "calCell") {
        for (var i in myElement.children) {
            if (myElement.children[i].id == "calDateText") {
                if (myElement.children[i].color == toggleColor) {
                    myElement.children[i].color = "";
                }
                else {
                    myElement.children[i].color = toggleColor;
             }
          }
       }
    }
}

//выделение выбранной даты
function fSetSelectedDay(myElement){
    if (myElement.id == "calCell") {
        if (!isNaN(parseInt(myElement.children["calDateText"].innerText))) {
            myElement.bgColor = "#0054e3";
            //myElement.style.color= "#FFFFFF";
            objPrevElement.bgColor = "";
            document.all.calSelectedDate.value = parseInt(myElement.children["calDateText"].innerText);
            objPrevElement = myElement;
      }
   }
}

//количество дней в месяце года
function fGetDaysInMonth(iMonth, iYear) {
    var dPrevDate = new Date(iYear, iMonth, 0);
    return dPrevDate.getDate();
}

//строим сам календарь
function fBuildCal(iYear, iMonth) {
    var aMonth = new Array();
    aMonth[0] = new Array(7);
    aMonth[1] = new Array(7);
    aMonth[2] = new Array(7);
    aMonth[3] = new Array(7);
    aMonth[4] = new Array(7);
    aMonth[5] = new Array(7);
    aMonth[6] = new Array(7);
    var dCalDate = new Date(iYear, iMonth-1, 1); //установили дату на нужный месяц и год первого числа
    var iDayOfFirst = dCalDate.getDay(); //номер дня недели когда первое число
    var iDaysInMonth = fGetDaysInMonth(iMonth, iYear); //количество дней в году
    var iVarDate = 1;
    var i, d, w;
    aMonth[0][0] = "Вс";
    aMonth[0][1] = "Пн";
    aMonth[0][2] = "Вт";
    aMonth[0][3] = "Ср";
    aMonth[0][4] = "Чт";
    aMonth[0][5] = "Пт";
    aMonth[0][6] = "Сб";
    for (d = iDayOfFirst; d < 7; d++) {
        aMonth[1][d] = iVarDate;
        iVarDate++;
    }
    for (w = 2; w < 7; w++) {
        for (d = 0; d < 7; d++) {
            if (iVarDate <= iDaysInMonth) {
                aMonth[w][d] = iVarDate;
                iVarDate++;
           }
        }
    }
return aMonth;
}

//вывод на экран календаря
function fDrawCal(iYear, iMonth) {
    var myMonth;
    myMonth = fBuildCal(iYear, iMonth);
    document.write("<table border='0' cellpadding='0' cellspacing='0'>")
    document.write("<tr class='Header'>");
    document.write("<td>" + myMonth[0][0] + "</td>");    
    document.write("<td>" + myMonth[0][1] + "</td>");
    document.write("<td>" + myMonth[0][2] + "</td>");
    document.write("<td>" + myMonth[0][3] + "</td>");
    document.write("<td>" + myMonth[0][4] + "</td>");
    document.write("<td>" + myMonth[0][5] + "</td>");
    document.write("<td>" + myMonth[0][6] + "</td>");
    document.write("</tr>");
    for (w = 1; w < 7; w++) {
        document.write("<tr>")
        for (d = 0; d < 7; d++) {
            document.write("<td class='Item' id=calCell style='CURSOR:Hand' onMouseOver='fToggleColor(this)' onMouseOut='fToggleColor(this)' onclick=fSetSelectedDay(this)>");
            if (!isNaN(myMonth[w][d])) {
                document.write("<font id=calDateText onMouseOver='fToggleColor(this)' style='CURSOR:Hand;' onMouseOut='fToggleColor(this)' onclick=fSetSelectedDay(this)>" + myMonth[w][d] + "</font>");
            } 
            else {
                document.write("<font id=calDateText onMouseOver='fToggleColor(this)' style='CURSOR:Hand;' onMouseOut='fToggleColor(this)' onclick=fSetSelectedDay(this)> </font>");
            }            
            document.write("</td>")
        }
        document.write("</tr>");
    }
    document.write("</table>")
}

//на select при изменение состояния месяца и года, т.е. при выборе другого
function fUpdateCal(iYear, iMonth) {
    myMonth = fBuildCal(iYear, iMonth);
    objPrevElement.bgColor = "";
    document.all.calSelectedDate.value = "";
    for (w = 1; w < 7; w++) {
        for (d = 0; d < 7; d++) {
            if (!isNaN(myMonth[w][d])) {
                calDateText[7*(w-1)+d].innerText = myMonth[w][d];
            }
            else {
                calDateText[7*(w-1)+d].innerText = " ";
         }
      }
   }
}
// End -->
</script>


Автор: GIK 18.2.2007, 19:43
Лучше юзать innerHTML.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)