עבור לתוכן
View in the app

A better way to browse. Learn more.

HWzone

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

JavaScript: בעיה עם CloneNode

Featured Replies

פורסם

שלום. אני בונה טופס של הזמנת פריטים. כאשר לקוח מעוניין להזמין פריט נוסף אני יוצר שורה נוספת בטבלה להזמנת הפריט.

האובייקטים בטבלה משוכפלים ע"י שימוש ב-CloneNode והוספתם ל-Tbody ע"י appendChild.

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

הנה הפונקציה שאני משתמש(לקוחה מהאינטרנט):

nameNum = 1;
function addRow2(){
var t = document.getElementById('test2');
var tb = t.getElementsByTagName('tbody')[0];
var tr0 = tb.childNodes[0];

var myClone = tr0.cloneNode(true);
var newInpt = myClone.getElementsByTagName('input');
var newSel = myClone.getElementsByTagName('select');
var newTa = myClone.getElementsByTagName('textarea');

for (i=0; i<newInpt.length; i++){
var newName = newInpt[i].name.substring(0,newInpt[i].name.search(/\d/)) + nameNum;
newInpt[i].setAttribute('name',newName);
addNewEls(newName, newInpt[i].type);
}
for (i=0; i<newTa.length; i++){
var newName = newTa[i].name.substring(0,newTa[i].name.search(/\d/)) + nameNum;
newTa[i].setAttribute('name',newName);
addNewEls(newName, newInpt[i].type);
}
for (i=0; i<newSel.length; i++){
var newName = newSel[i].name.substring(0,newSel[i].name.length-1) + nameNum;
newSel[i].setAttribute('name',newName);
addNewEls(newName, newInpt[i].type);
}

nameNum++;
tb.appendChild(myClone);

}

הפונקציה פועלת יפה מאוד, והאובייקטים משוכפלים ללא בעיה מיוחדת.

שוב, לפני שאני משכפל את האובייקטים בטבלה, אני יכול להיכנס למאפיינים של האובייקט ע"י

document.forms("myForm").myFiels_1.value

ולראות האם הוזנו ערכים מתאימים וכו'. אך כאשר אני מפעיל את הפונקציה, לא ניתן לעשות זאת יותר, זאת השגיאה שמתקבלת:

Object doesn't support this property ot method: '..'

אני יכול להשתמש ב-

document.forms('myForm').elements[0]

, כדי לגשת לשדות בטופס, אך אני צריך לגשת לפי השם שלהם ולא לפי האינדקס, או לפי סוג האובייקט.

למה זה קורה? איך ניתן לסדר את זה?

אני מקווה שהבנתם. אשמח לעזרה.. תודה מראש.. :xyxthumbs:

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.