לחצנים ו-IE

לחצנים ו-IE

אני משתמש בקוד הבא:
var Element = {}; Element.create = function(nodeName, attributes, content){ var el = document.createElement(nodeName); for(var att in attributes){ el.setAttribute(att, attributes[att]); } if(content) el.appendChild(document.createTextNode(content)); return el; } var x= Element.create("button", {"value":"1", type:"button"}, "text"); alert(x.innerHTML);​
כאשר אני מריץ את הקוד הזה על IE אז הטקסט שמוצג בכפתור הוא התוכן שבין שתי התגיות וה-value של הלחצן. למה זה? וכגם כאשר אני קורא ל-getAttribute עם הפרמטר value מופיע לי מה שמופיע ב-innerHTML. אני מניח שמדובר בבאג של IE, איך מתקנים את זה ?
 
../images/Emo105.gif../images/Emo208.gif

 

fat fish

New member
appendChild

אתה מנסה להפעיל קצת מניפולציות על תגים שלא נועדו למניפולציות אלו. בדוגמה הנ"ל, אתה מנסה להזין תת-תוכן (appendChild) לאובייקט שאינו אובייקט מכולה. button אינו אובייקט מכיל, אינך יכול לפתוח אותו להזנת נתונים או לקרא ממנו נתונים למעט ערכי ה-attribute שלו. appendChild נועד לתגים שניתן להזין לתוכם "בנים" במבנה xml של DOM, או בשמם האחר - אובייקטי מכולה - לדוגמה:
<p> here you can add another content like tags, objects or text using appendChild. </p>​
שים לב שגם יש איזו שגיאה בריצת לולאת ה-for, לא הספקתי יותר מדי להסתכל בזה - אבל ראיתי משום מה שהלולאה עושה 3 איטרציות במקום 2, הייתי בודק גם את זה. בהצלחה,
 

fat fish

New member
תיקון...../images/Emo19.gif

קטן שלי (:) התבלבלתי בין button לבין input/button. עכשיו, בבדיקה שערכתי, IE מתייחס לערך שבתוך התג כערך המייצג את ה-value של ה-button. בעוד FF מבדיל בין ה-value לבין ה-innerHTML.
<button type="button" name="nam" value="val" onclick="alert(this.value);alert(this.innerHTML);">inner</button>​
הקוד הזה ב-IE יקפיץ בפעמיים את המילה inner בעוד ב-FF זה יקפיץ פעם אחת val ופעם אחת inner. אז אתה צודק....:)
 

Yoava333

New member
ניר כי התג button מתנהג אחר ב-FF

ו-IE, ב-FF אתה יכול להכניס לו value ב-IE אתה חייב להכניס את הטקסט בין התגים
<button>asdf</button>​
 
למעלה