צפיות
תשובות
הצגת טקסט בעזרת innerHTML
שלום לכל התותחים,
באחד מדפי הניהול של האתר שלי,
קיים שדה של עדכון נתונים לרשומה מסויימת.
השדה הוא מסוג textarea.
בשדה הזה מוזן מלל הכולל גם תגיות HTML שמוזנות ידנית.
יצרתי כפתור "תצוגה מקדימה" שמציג את הטקסט שנרשם בשדה הטקסט,
בתוך טבלת "תצוגה מקדימה", כדי שאפשר יהיה לראות כיצד הטקסט יראה בתור HTML.
כתבתי את הקוד הבא:
<textarea name="txtCourseDetailsHeb" rows="3" cols="85" dir="rtl"></textarea>
<br>
<div align="right" dir="rtl" id="detailsPreview" class="small"></div>
<input type="button" name="btnPreview" value="תצוגה מקדימה" onClick="javascript:document.getElementById('detailsPreview').innerHTML=document.frmUpdate.txtCourseDetailsHeb.innerHTML">
הבעיה היא שכשהקוד רץ,
הטקסט מוצג בדיוק כמו שהוא נרשם ב-textarea, והוא מתייחס לתגיות HTML שנרשמו בשדה, בתור תווים רגילים.
מה אני צריך לעשות, כדי שיידע לפענח את התגיות בתור תגיות HTML, ולהציג את הטקסט כראוי?
4 תשובות
אתה פונה לא נכון לערך של ה textArea
תפנה אליו בתור value ולא בתור innerHTML.
הקוד הבא עובד אצלי יופי:
<form method="post" name="frmUpdate">
<textarea name="txtCourseDetailsHeb" rows="3" cols="85" dir="rtl"></textarea><br>
<input type="button" name="btnPreview" value="תצוגה מקדימה" onClick="document.getElementById('detailsPreview').innerHTML = document.frmUpdate.txtCourseDetailsHeb.value">
</form>
<div align="right" dir="rtl" id="detailsPreview" class="small"></div>
מה שחסר עכשיו זה החלפת תווים…
מעולה, זהר – תודה!
מה שכן,
עכשיו אני מנסה לכתוב קוד שיחליף מה-innerHTML של ה-textarea, את כל ה-chr(10) ו-chr(13) ב-<br>, בשביל התצוגה המקדימה בלבד…
מצאתי פונקציית החלפה של תווים, אבל אני משום מה לא מצליח להגיד לה להחליף את ה-chars הספציפיים.
איך אני פונה אליהם?
(הניסיון הנואש שלי):
var str = document.frmUpdate.txtCourseDetailsHeb.value
str = replaceSubstring(str, char(13), "<br>")
document.getElementById('detailsPreview').innerHTML = str
אל תנסה להפוך את JS ל-VBS…
זה פשוט לא כדאי מהרבה בחינות
ב-JS יש אאובייקט יפה מאוד שנקרא RegExp אני מציע שתלמד אותו (יש מאמר שלי במדור JS מאמרים לבינוניים). הוא יעשה לך חיים קלים בד"כ בכל מה שקשור לניתוח טקסטים
במקרה הזה היה צריך בסה"כ לעשות
"strnstrnstr".replace(/n/g,"<br />");
כמה טוב שיש עוד אנשים כמוכם… 🙂
עזרתם לי המון! תודה!