Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> parseInt 
:(
    Опции темы
Black_leopard
Дата 10.3.2007, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 18.10.2006

Репутация: нет
Всего: нет



Помогите, пожалуйста, переделать эту строчку чтобы работала в FireFox
Код

    if (!isNaN(parseInt(myElement.children["calDateText"].innerHTML))) 


PM MAIL   Вверх
Sardar
Дата 10.3.2007, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Что есть myElement? Если calDateText это уникальный елемент, то обращайся к нему по id (document.getElementById(id));


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Black_leopard
Дата 10.3.2007, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 18.10.2006

Репутация: нет
Всего: нет



У меня сделано таким образом
Код

function fSetSelectedDay(myElement){
    if (myElement.id == "calCell") {
        if (!isNaN(parseInt(myElement.children["calDateText"].innerHTML))) {
            myElement.bgColor = "#0054e3";
            //myElement.style.color= "#FFFFFF";
            objPrevElement.bgColor = "";
            document.all.calSelectedDate.value = parseInt(myElement.children["calDateText"].innerHTML);
            objPrevElement = myElement;
      }
   }
}


а вызывается
Код

document.write("<td class='Item' id=calCell style='CURSOR:Hand' onMouseOver='fToggleColor(this)' onMouseOut='fToggleColor(this)' onclick=fSetSelectedDay(this)>");


Возможно тут дело в innerHTML, т.к. он работает только начиная с IE 4 и Nescape 6.0. А чем можно тогда его заменить?

Это сообщение отредактировал(а) Black_leopard - 10.3.2007, 18:28
PM MAIL   Вверх
SelenIT
Дата 10.3.2007, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 49
Всего: 401



Black_leopard, с innerHTML-то все в порядке - оно штука хоть и нестандартная, но вполне кроссбраузерная. А вот children, насколько мне известно, IE-only. Есть кроссбраузерный childNodes, но он, насколько мне известно, позволяет обращаться только по числовому индексу.

Наиболее адекватная замена, пожалуй, что-то вроде
Код

myElement.getElementsByTagName("span")["calDateText"].innerHTML // если элемент с id="calDateText" - это span


Но не совсем понятно, зачем вообще выбирать потомка кликнутой ячейки с id="calDateText" (если я верно ухватываю логику). Разве в этой ячейке есть еще какой-то текст? Может, достаточно взять текстовое значение самой ячейки? Или поставить обработчик не на ячейку, а непосредственно на контейнер текста? Или вообще упростить верстку календаря (насколько я понимаю, речь о нем)?

А то куча элементов с одинаковыми id-ами - само по себе очень плохо...


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
Black_leopard
Дата 11.3.2007, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 18.10.2006

Репутация: нет
Всего: нет



Большое спасибо, SelenIT!
Теперь осталось только заменить строчку    document.all.calSelectedDate.value = ... на что-то более подходящее, что будет работать в Mozilla, потому что она ругается типа не существует данного свойства.
 
PM MAIL   Вверх
Mymik
Дата 11.3.2007, 20:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1474
Регистрация: 12.5.2006
Где: Lamer-центер

Репутация: 11
Всего: 78



Black_leopard, надо заменить на 
Код

document.getElementById("calSelectedDate")



--------------------
ICQ ::            857-857
E-mail ::         mymik[at]inbox[dot]ru 
HomaPage ::  http://localhost/

:to_become_senile  :this
PM MAIL WWW ICQ   Вверх
Black_leopard
Дата 13.3.2007, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 18.10.2006

Репутация: нет
Всего: нет



Все, уже почти все работает в Firefox кроме динамической смены дней при изменении месяца и года, как можно правильно обратиться к calDateText[7*(w-1)+d].innerHTML если писать что-то типа document.calDateText[7*(w-1)+d].innerHTML, то ругается, типа есть null, данный календарь выводится в форме с названием Calendar даже если прописать document.Calendar.calDateText[7*(w-1)+d].innerHTML, то же говорит что есть null, подскажите пожалуйста, как правильно обращаться к данному Id? даже если писать getElementById, тож ругается.

Вот функции в которых происходит вывод и изменение значений (дней) календаря при смене месяца и года
Код

//вывод на экран календаря
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 = "#ffffff";
    document.frmCalendarSample.calSelectedDate.value = "";
    for (w = 1; w < 7; w++) {
        for (d = 0; d < 7; d++) {
            if (!isNaN(myMonth[w][d])) {
                calDateText[7*(w-1)+d].innerHTML = myMonth[w][d];                
            }
            else {
                calDateText[7*(w-1)+d].innerHTML = " ";                
         }
      }
   }
}

PM MAIL   Вверх
alsah
Дата 31.7.2008, 10:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 31.7.2008

Репутация: нет
Всего: нет



Цитата(Black_leopard @ 13.3.2007,  13:58)
Все, уже почти все работает в Firefox кроме динамической смены дней при изменении месяца и года, как можно правильно обратиться к calDateText[7*(w-1)+d].innerHTML 

Неужели нет решения ?
PM MAIL   Вверх
Saranin
Дата 28.3.2011, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 28.3.2011

Репутация: нет
Всего: нет



Сначала правим условие добавляем name

if (!isNaN(myMonth[w][d])) 
                        {
                            document.write("<font id='calDateText' name='calDateText' onclick=fSetSelectedDay(this)>" + myMonth[w][d] + "</font>");
                        } 
                    else 
                        {
                            document.write("<font id='calDateText' name='calDateText' onclick=fSetSelectedDay(this)></font>");
                        }


потом так:
document.getElementsByName("calDateText")[((7 * w) + d) - 7].innerHTML
PM MAIL   Вверх
SelenIT
Дата 29.3.2011, 07:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 49
Всего: 401



Эталонный некропостинг! Хотя да, приписать к нестандартному тегу нестандартный же атрибут (вместо того, чтобы привести в порядок id-ы, сделав их уникальными) — это дело серьезное, ради такого можно и подождать годика четыре...  smile 

Это сообщение отредактировал(а) SelenIT - 29.3.2011, 07:19


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1802 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.