02-01-2011, 22:15
|
מנהל
|
|
חבר מתאריך: 26.07.08
הודעות: 6,473
|
|
לפי מה שהבנתי אתה מתייחס למשתנה t בתור האובייקט שהמשתמש סימן.
אי אפשר לעשות את זה פשוט כי זה לא עובד ככה.
כשמשתמש מסמן משהו במסמך, הוא לא מסמך דבר אחד, אלא טווח.
הטווח מתחיל בנקודה אחת ומסתיים בנקודה שנייה.
כל נקודה מכילה אלמנט ספציפי, וכשמדובר ב-text node אז יש גם את ההיסט מתחילת האובייקט שבו מתחיל\נגמר הטווח.
אובייקט ה- text node מסמל "תג" בלתי נראה שבו מוכל הטקסט.
לדוגמא במקום לכתוב:
אפשר לראות את זה ככה:
קוד:
<p><text content="Hello world!" /></p>
כשסימון הטקסט מתחיל באות e של המילה Hello, אז הדפדפן מצביע על ה- text node הנ"ל כשההיסט (או אינדקס?) הוא 1.
כשאנחנו מסמנים טווח ורוצים לקבל את קוד ה-HTML שהטווח כולל, אז הדפדפן מבצע תיקון לקוד ה-HTML ע"י הוספת תגים בצדדי המחרוזת כך שהקוד יהיה תקין.
משתני המחלקה rangeObject.startContainer ו- rangeObject.endContainer אלו למעשי האובייקטים (או "נקודות" כפי שכתבתי בתחילה) שסומנו בקצות הטווח.
זה כמו לעשות:
קוד:
document.getElementById('element_name')
ולכן ניתן להשתמש ב-parentNode כדי לזהות את אלמנט האב של ה-"נקודות" הנ"ל,
ובאופן זה גם נוכל להוריד מהמחרוזת את התגים.
למרות שבעצם, עד כמה שאני שם לב, בכל תרחיש אפשרי שבו מסומן text node, אז יתווספו תגי html בקצה המתאים של הנקודה שהיא text node.
ולכן מספיק לזהות האם סומן text node ופשוט להוריד את התגים בהתאם.
נסה לקרוא גם את העמוד שקישרתי אליו: http://www.quirksmode.org/dom/range_intro.html
|