בעיה בקוד JAVASCRIPT

בעיה בקוד JAVASCRIPT ../images/Emo187.gif

אז ככה: הקוד מציג בכל פעם שורה אחת בטבלה ומסתירה את כל השאר לפי הערך שנבחר בסלקט. הקוד עובד אבל אני רוצה שברגע שבוחרים בסלקט VALUE=0 אז אף אחד מהשורות לא תופיע - זה עובד לי - אבל אז מקבלים ERROR אני רוצה שפשוט לא יקבלו ERROR במקרה כזה. תוכלו לתקן לי את הקוד?
<script language="javascript"> var currDivObj = null; function changeDIV(selObj) { var divObj; selValue = selObj.options[selObj.selectedIndex].value; divObj = document.getElementById("div"+selValue); if (currDivObj) { currDivObj.style.display = "none"; } divObj.style.display = ""; currDivObj = divObj; } </script>​
וזה הסלקט:
<select name="main_id" onchange="changeDIV(this)" size="1"> <option>בחר קטגוריה -></option> <option value="1">Image</option> <option value="2">Video</option> <option value="3">Audio</option> </select>​
 

selalerer

New member
יש כמה אפשרויות.

1. אתה יכול לבחון את הערך selValue או את האינדקס selObj.selectedIndex ואם הם הראשון אז לא לעשות את השורה אחרי, משהו כזה:
if(!0==selObj.selectedIndex) { var selValue=selObj.options[selObj.selectedIndex].value; var divObj=document.getElementById("div"+selValue); if(divObj) { divObj.style.display=""; } }​
2.פשוט לעטוף את השינוי style.display של divObj בתנאי (לבדוק אם הוא בכלל אובייקט) שזה דבר שאני תמיד עושה (עשיתי את זה גם פה ב 1) אבל זה אומר שהוא בכל מקרה קורא לgetElementById גם כשזה לא נחוץ, וזה לטעמי קוד לא יפה. זה נראה ככה:
if(divObj) { divObj.style.display=""; }​
בכל אופן מומלץ שתמצא מדריך טוב לJavaScript ותלמד ממנו, כך תוכל לעשות משימות שכאלה בעצמך, זה בסך הכל לא כזה מסובך. בהצלחה
.
 
תוכל לכתוב לי את הקוד מסודר?

אני לא יודע ג'אווה סקריפט מספיק טוב וגם אם אתחיל ללמוד את זה יקח לי זמן רב עד שאדע לפתור את הבעיה... תוכל פשוט לכתוב לי את הסקריפט מתוקן? לא חלק ממנו ולא רק את ה IF אלא את הכל.. כל מה שצריך להיות בתגית ה SCRIPT. תודה...
 
הצלחתי! ובכל זאת תבדוק לי את הקוד?

<script language="javascript"> var currDivObj = null; function changeDIV(selObj) { var divObj; selValue = selObj.options[selObj.selectedIndex].value; divObj = document.getElementById("div"+selValue); if (currDivObj) { currDivObj.style.display = "none"; } if(divObj) { divObj.style.display=""; } currDivObj = divObj; } </script>​
 

selalerer

New member
זה הפתרון השני שנתתי (הפחות טוב).

אם אתה משתמש בJavaScript כדאי שתלמד את השפה (לפחות קצת) בכדי שתוכל לדבג מערכות של עצמך, זה יותר מהר מלבקש עזרה על כל דבר קטן, בנוסף תוכל לעשות קוד מהיר יותר ולא רק ללכת על הפתרון הפשוט יותר סמנטית (כמו שעשית עכשיו).
 
היא לא שפה קשה במיוחד

ז"א אתה צריך רק להבין את הדברים הבסיסיים (שגם בכל שפת תכנות אחרת צריך לדעת) שהם דיי קלים להבנה. לאחר מכן זה רק עניין של חקירה וניסיון. http://www.webmaster.org.il שם כנס בתפריט "מדורים" ל-"מדור JS" ושם למדריך JS בהצלחה
 
למעלה