createElement nu functioneaza in Apache Cordova

Salut,

Am facut o aplicatie cu Apache Cordova. Problema este ca vreau sa creez niste elemente HTML si nu merge.

Asta e functia cu care creez elementele:

function view_expenses()
{
    for (let i = 0; i < expenses.length; i ++)
    {
        if (expenseData = localStorage.getItem('expense' + expenses[i]))
            expenseData = expenseData.split('|');

        var expenseCard = document.createElement('div');
        expenseCard.className = 'card';

        let expenseCardBody = document.createElement("div");
        expenseCardBody.setAttribute('class', 'card-body');
        expenseCard.appendChild(expenseCardBody);

        let expenseValue = document.createElement("h5");
        expenseValue.setAttribute('class', 'card-title text-danger');
        expenseValue.innerText = expenseData[EXPENSE_VALUE] + ' lei';
        expenseCardBody.appendChild(expenseValue);

        let expenseDest = document.createElement("h6");
        expenseDest.setAttribute('class', 'card-subtitle mb-2 text-muted');
        expenseDest.innerText = expenseData[EXPENSE_DEST];
        expenseCardBody.appendChild(expenseDest);

        let expenseTime = document.createElement("p");
        expenseTime.setAttribute('class', 'card-text');
        expenseTime.innerText = 'Cheltuială înregistrată pe ' + expenseData[EXPENSE_TIME] + '.';
        expenseCardBody.appendChild(expenseTime);

        let expenseDelBtn = document.createElement("a");
        expenseDelBtn.setAttribute('class', 'btn btn-success card-link');
        expenseDelBtn.innerHTML = '<span class="fa fa-trash-alt mr-2"></span>Șterge';
        expenseCardBody.appendChild(expenseDelBtn);

        lastID = expenses[i];
    }
}

M-am uitat in Console, nici-o eroare. De la ce sa fie?

Multumesc!

Variabila expenses nu trebuie pasată ca argument funcției view_expenses()? O ai setată ca fiind globală?!

E globala.

Nu cred ca are de a face cordova cu ce face codul mai us. Posibll sa nu functioneze in acest caz chiar daca elimini cordova din ecuatie.

Incearca izolat si vezi daca merge.

Am incercat izolat si tot nu. Si mai ciudat e ca si cu alte elemente create la fel, folosite in alte script uri si care merg cu succes, tot nu merg. Foarte ciudat.

De ce folosești uneori innerText și alteori innerHTML?

Eu foloseam tot timpul innerHTML, chiar dacă e doar text, n-are legătură neaparat.

Iar primul element, expense card nu văd să-l atașezi de nici un element existent, rămâne în aer

1 Like

Fuuck, mi-a luat vreo 3 ore, si trebuia doar sa il atasez de body. Lol.

Merci :*

Happens to the best of us :slight_smile:

1 Like

Update: Mai am o problema, cu functia addEventListener. Pentru fiecare buton de stergere al unui expense din asta creez un eventListener de tip click. Totul bun si frumos, problema e ca orice buton de stergere as apasa, mereu va sterge ultimul element (automat cel care are si ultimul eventListener creat). Am testat functia cu care sterg in consola, merge bine. De la ce poate fi? Din cate am citit nu ar trebui sa se suprascrie evenimentele intre ele. Also, mai am un buton care sterge toate expensurile, actionat tot cu un eventListener. Si la ala nu merge, desi functia am testat-o in consola si merge si ea.

        let expenseDelBtn = document.createElement("a");
        expenseDelBtn.setAttribute('class', 'btn btn-success card-link');
        expenseDelBtn.setAttribute('id', 'delBtn' + expenses[i]);
        expenseDelBtn.innerHTML = '<span class="fa fa-trash-alt mr-2"></span>Șterge';
        document.getElementById('delBtn' + expenses[i]).addEventListener("click", function() {
          del(expenses[i])
        }, false);