שלח תשובה

זירת השאלות

541
צפיות
0
תשובות

בעיה עם CloneNode

,‏ 10 באוגוסט, 2007

שלום. אני משכפל אובייקטים ע"י שימוש ב-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], כדי לגשת לשדות בטופס, אך אני צריך לגשת לפי השם שלהם ולא לפי האינדקס.
אני מקווה שהבנתם. אשמח לעזרה.. תודה מראש..

תגיות:

0 תשובות

    שלח תשובה