Je dois ajouter un bouton à une table créée de manière dynamique à l'aide de la base de données en temps réel en Firebase.
J'ai essayé de le faire avec ci-dessous Code Snippet. P>
var dbRefUsers = firebase.database().ref().child('Web App').child('Users'); var appendingTo = document.getElementById("userlist"); dbRefUsers.on('child_added', gotNewChild, errData); function gotNewChild(userSnapshot){ var user = userSnapshot.val(); var userName = user.Name; var userEmail = user.Email; var userPassword = user.Password; function userAction(){ } function createElementWithText(tag, text) { var elm = document.createElement(tag); elm.textContent = text; return elm; } var tr = document.createElement('tr'); var td = document.createElement('td'); var button = document.createElement('button'); tr.appendChild(createElementWithText('td', userName)); tr.appendChild(createElementWithText('td', userEmail)); tr.appendChild(createElementWithText('td', userPassword)); tr.appendChild(createElementWithText('td',createElementWithText('button', button.innerHTML = 'type="button" class="abc" onclick="userAction()"'))); appendingTo.appendChild(tr); } function errData(error){ console.log("Error!") console.log(error); }
3 Réponses :
Votre fonction renvoie un tableau. Essayez d'utiliser l'opérateur de répandre comme celui-ci p>
tr.appendchild (... CreeEnmentwithText ('TD', Nom d'utilisateur)); P>
ou p>
tr.appendchild (créatifementwithtext ('TD', nom d'utilisateur) [0]); p>
Il n'y a pas de question avec les 3 premiers éléments. Seul problème avec le dernier élément qui est tr.appendchild (CreeEnmentwithText ('TD', CreeEnmentwitht EXT ('INPUT', INPUT.INNERHTML = 'TYPE = "BOUTON" CLASS = "ABC"))); < / code>
<table></table>
I'Check ta réponse DUD. Aucune erreur, mais alors ma table d'annexe n'a pas été affichée.
Ok, alors vous aimez également la table elle-même de manière dynamique? Si vous ajoutez le code qui ne fonctionne pas, je vais regarder.
function createElementWithText(tag, text, attributeObj = []) { var elm = document.createElement(tag); if (Object.keys(attributeObj).length > 0) { for (var key in attributeObj) { (key == 'className') elm.className = attributeObj[key]; (key == 'type') elm.type = attributeObj[key]; } } elm.append(text); return elm; } var tr = document.createElement('tr'); var td = document.createElement('td'); var attributeObj = []; attributeObj['type'] = 'button'; attributeObj['className'] = 'abc'; attributeObj['id'] = 'test'; tr.appendChild(createElementWithText('td', userName)); tr.appendChild(createElementWithText('td', userEmail)); tr.appendChild(createElementWithText('td', userPassword)); tr.appendChild(createElementWithText('td', createElementWithText('input', 'button', attributeObj))); appendingTo.appendChild(tr);
J'ai essayé votre suggestion DUD. Mais la sortie est [objet htmlbuttonelement] code>