
29-12-2009, 10:03
|
|
|
|
חבר מתאריך: 25.08.03
הודעות: 9,114
|
|
1. שורת הקוד הראשונה והאחרונה אינה קוד תקין בשפת js, זהו קוד html...י
2. נסה להחליף את קוד הפונקציה השניה בקוד זה:
קוד:
function hs(x)
{
var x = "tafn"+x
if(navigator.appName=='Netscape')
{
if(document.getElementById(x).style.visibility=="hidden")
document.getElementById(x).style.visibility="show";
else
document.getElementById(x).style.visibility="hidden";
}
else
{
if(document.getElementById(x).style.display=="none")
document.getElementById(x).style.display="block";
else
document.getElementById(x).style.display="none";
}
}
השינוי העיקרי שעשיתי פה הוא הסוגריים המסולסלות בתנאי הראשי. בהעדרם, המנתח (parser) עלול להתבלבל עם התנאים המקונננים ולכן מאד לא רצוי לא לציין את הסוגריים המסולסלות כשיש קינון תנאים או לולאות.
3. יש הרבה מה לשפר בקוד הזה:
א. נראה לי שהתנאי הראשי די מיותר, וכדאי להשאיר רק את החלק השני של התנאי (הפועל על המאפיין display). י
1. בהתאם למצב העדכני של הדפדפנים בני ימינו, לא נראה לי שאין דפדפנים נפוצים שלא תומכים בערכי none ו-block של מאפיין התצוגה.
2. המאפיין ראות (visibility) בכלל משמש למטרה שונה ממאפיין התצוגה (display)
ב. אתה פונה לאלמנט מסויים לפחות פעמיים בקוד והוא אף כתוב בקוד 6 פעמים!
יעיל וגם נקי יותר לכתוב זאת כך:
קוד:
function hs(x)
{
var x = document.getElementById("tafn"+x);
if(navigator.appName=='Netscape')
{
if(x.style.visibility=="hidden")
x.style.visibility="show";
else
x.style.visibility="hidden";
}
else
{
if(x.style.display=="none")
x.style.display="block";
else
x.style.display="none";
}
}
ורצוי אף כך:
קוד:
function hs(x)
{
var x = document.getElementById("tafn"+x).style;
if(navigator.appName=='Netscape')
{
if(x.visibility == "hidden")
x.visibility = "show";
else
x.visibility = "hidden";
}
else
{
if(x.display == "none")
x.display = "block";
else
x.display = "none";
}
}
ג. ניתן אף לכתוב את הקוד בצורה שונה שלא בהכרח יעילה יותר, אך יהיה כנראה מי שיטען שהןא נקי וקריא יותר:
קוד:
function hs(x)
{
var x = document.getElementById("tafn"+x).style;
if(navigator.appName=='Netscape')
x.visibility = x.visibility=="hidden" ? "show" : "hidden";
else
x.display = x.display=="none" ? "block" : "none";
}
הוספתי פה גם ייחוס יישיר לאובייקט style של האלמנט, מה שיחסוך לפנות אליו פעם נוספת, וגם את הביטוי הטרינרי.
4. לסיום, שמתי לב רק בשלבים האחרונים שטעית בתחביר הערך "נסתר" של המאפיין "ראות" (ב-css). י
הערך נקרא hidden ולא hide.
|