אני מנסה לחלק אלמנט לשניים באופן הבא:
<span style="font-size: 26pt !important; color: rgb(0, 255, 0);">דג סקרן <span style="font-size: 16pt!important;">שט לו בים זך </span>אך לפתע....</span>
כרגע אלמנט האב כולל בתוכו את האלמנט הפנימי.
אני מעוניין להוציא מאלמנט האב את המאפיין של גודל הכתב, להחיל אלמנט חדש בצמוד לתחילת אלמנט האב ושיסתיים לפני הצאצא וכן שיהיה אלמנט נוסף של גודל הכתב שיתחיל לאחר הצאצא ויסתיים ביחד עם אלמנט האב. ככה:
<span style="color: rgb(0, 255, 0);"><span style="font-size: 26pt!important;">דג סקרן</span><span style="font-size: 16pt!important;"> שט לו בים זך </span><span style="font-size: 26pt!important;">אך לפתע....</span></span>
מבחינת הקוד מה שהצלחתי כרגע לעשות מועיל רק במקרה שאלמנט האב ואלמנט הצאצא מכילים את אותו הטקסט עם הקוד הבא:
// הסרת המאפיין גודל כתב כאשר האב והצאצא זהים ורק גודל הכתב שונה
if (parent_element_text == element_text) {
parent_element.style.fontSize = ""; //יש דרך למחוק לגמרי את המאפיין?
}
וזאת הפונקציה המלאה בניסוי האחרון לפני שהחלטתי שאין לי ברירה אלא להטריח אתכם:
function check_parent(element, style, arg) {
var parent_element = element.parentElement;
if (parent_element === null) {
return;
}
var element_text = element.innerText;
var parent_element_text = parent_element.innerText;
// הסרת המאפיין גודל כתב כאשר האב והצאצא זהים ורק גודל הכתב שונה
if (parent_element_text == element_text) {
parent_element.style.fontSize = ""; //יש דרך למחוק לגמרי את המאפיין?
}
/* מכאן הסתבכתי
מקרים לטיפול:
כאשר נבחר רק חלק מהאלמנט לשינוי הכתב-
צריך לסיים את התג לפני הבחירה ולהתחיל אותו שוב אחריה
כאשר לאלמנט האב יש עוד מאפיינים שצריכים לחול גם על הבחירה כגון צבע וכדו'
צריך להסיר את המאפיין גודל כתב וליצור תגית נפרדת שצמודה לתגית המקורית עם המאפיין גודל כתב ושתגית זו תסתיים לפני הבחירה ותתחיל שוב אחרי הבחירה ותסתיים לפני התגית של אלמנט האב.
*/
var childes_string = "";
var childes = parent_element.children;
for (chiled in childes) {
childes_string += chiled.innerText;
}
if (parent_element_text == childes_string) {
parent_element.style.fontSize = "";
}
check_parent(parent_element, style, arg);
}
תודה לכל העוזרים.