JavaScript setAttribute in IE - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

JavaScript setAttribute in IE


BURTON

Recommended Posts

אני מנסה לעשות setAttribute לאובייקט מסויים(תא של טבלה) וב-FF זה עובד מצויין אך ב-IE משום מה לא.

document.getElementById('month1').rows[rowNum].cells[(day-1)%7].setAttribute('onclick','pickit(this);');

עשיתי חיפוש בגוגל ומצאתי כל מיני "פתרונות" שלא ממש עבדו.

יש לכם מושג מה עושים?

מי שרוצה להבין על מה מדובר אז הנה העמוד

http://88.152.174.234/dtpicker/dtpicker.html

קישור לתוכן
שתף באתרים אחרים

הפתרון הוא -


document.getElementById('month1').rows[rowNum].cells[(day-1)%7].onclick='pickit(this);';

לא הכי אלגנטי, אבל עובד, מכיוון ש javascript יוצר attribute חדש באופן אוטומטי במקרה ומנסים לבצע אליו השמה.

קישור לתוכן
שתף באתרים אחרים

אחלה תודה

ומה לגביי שתי השורות האלה?

document.getElementById('month1').rows[rowNum].cells[(day-1)%7].setAttribute('class','day');
document.getElementById('month1').rows[rowNum].cells[(day-1)%7].setAttribute('style','cursor: pointer;');

ב-FF עובד אבל ב-IE לא.

סתם אתר... יש שם גם פורום שבניתי

קישור לתוכן
שתף באתרים אחרים

אם אתה יוצר את התאים דינאמית(ע"י innerhtml אולי, לא ראיתי את הקוד):

את התאים תיצור סטטית ולא דינאמית. במקום כל פעם לשנות את המאפיין בJS, פשוט תרשום את זה פעם אחת בקוד הHTML. תצטרך לשנות שם חלק מהדברים, אבל אני בטוח שתסתדר. כל פעם תכניס מספרים אחרים לתוך התאים(ואם יום ראשון הוא הראשון לחודש תשאיר שורה ריקה בהתחלה).

קישור לתוכן
שתף באתרים אחרים

אני בונה את זה בצורה דינמית:

row = document.getElementById('month1').insertRow(rowNum);
row.insertCell((day-1)%7).innerHTML = i;

(ובשביל מה פסרמתי את הלינק אם לא בשביל שתסתכל על הקוד? ;))

בכל מקרה אני לא רוצה טבלה קבועה בדיוק מהסיבה שאני לא רוצה להשאיר שורה ריקה. זה פשוט לא יפה.

עכשיו למה לעזאזל האקספלורר המעפן הזה לא יודע לעשות setAttribute כמו שצריך?

באג ידוע של תאימות ביניהם... עזוב, תעשה שיעבוד רק ל FF :)

תהיה ריאליסטי. זה לא יקרה בעשור הקרוב.

קישור לתוכן
שתף באתרים אחרים

ומה לגביי שתי השורות האלה?

document.getElementById('month1').rows[rowNum].cells[(day-1)%7].setAttribute('class','day');
document.getElementById('month1').rows[rowNum].cells[(day-1)%7].setAttribute('style','cursor: pointer;');

ב-FF עובד אבל ב-IE לא.

אולי אני מפספס משהו, אבל אתה יכול פשוט לעשות:

object.className = 'day';

object.style = 'cursor: pointer;'

(כש-"object" כמובן זה כל הקוד לפני ה-setAttribute אצלך..)

בעצם, ה-style מיותר. תכניס אותו ל-class...

דוגמה דיי פשוטה יש לך למשל כאן:

http://css.somepeople.net/dynamic

קישור לתוכן
שתף באתרים אחרים

בעצם, ה-style מיותר. תכניס אותו ל-class...

כן זה נכון.

בכל מקרה גם זה:

object.className = 'day';

לא עובד משום מה ב-IE

בעצם יותר נכון להגיד ש-CSS לא עובד ב-IE

הוא משום מה לא מתייחס ל-hover:

div#picker table tbody td.day:hover {
background: #eef;
}

קישור לתוכן
שתף באתרים אחרים

תנסה לשנות את זה ל:

div#picker table tbody td.day a:hover {
background: #eef;
}

אגב, אל תשכח להגדיר את ה-css של הלינק בסדר הנכון, LVHA (ר"ת של LoVe-HAte, אם אתה מתעקש): link, visited, hover, active

אה, זה לא לינק בכלל..

ב-IE אין event של hover על שום דבר אחר שהוא לא לינק..

מה שאתה מחפש זה זה:

http://www.thescripts.com/forum/thread157439.html

קישור לתוכן
שתף באתרים אחרים

אותו דבר לגביי שתי השורות האלה:

a#button:hover {
background: url('images/dropdown_hover.gif') no-repeat;
}

a#button:active {
background: url('images/dropdown_active.gif') no-repeat;
}

גם אותן IE לא מבצע

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

×
  • צור חדש...