2014-10-24 15 views
5

Sto cercando di scrivere il testo in un elemento con funzione .text(), ma ho ricevuto questo errore UncaughtTypeError: undefined non è una funzione, e ho anche provato la funzione append(), innerHtml(), createTextNode() senza successo.Come aggiungere del testo all'intervallo dopo document.createElement ("span") ;?

Cosa sto sbagliando?

var closeSpan = document.createElement("span"); 
closeSpan.setAttribute("class","sr-only"); 
closeSpan.text("Close"); //UncaughtTypeError: undefined is not a function 

O

var closeSpan = document.createElement("span"); 
closeSpan.setAttribute("class","sr-only"); 
closeSpan.append("Close"); //UncaughtTypeError: undefined is not a function 
+1

'.text()' è la funzione di jQuery. Usa 'closeSpan.textContent =" Chiudi ";' Non so quale sia la versione DOM di jQuery '.append()' – Regent

+1

'innerHTML' /' innerText'/'textContent' è una proprietà, non una funzione (' span. innerHTML = 'Close''). 'createTextNode' crea solo un nodo di testo, è comunque necessario aggiungerlo all'elemento (' span.appendChild (document.createTextNode ('Close')) '). – hsan

+0

* "Che cosa sto facendo male?" * - Stai confondendo i metodi jQuery e DOM. Puoi spiegare perché tu chiami 'document.createElement()' in primo luogo? (Date anche un'occhiata alla [documentazione per gli oggetti del nodo DOM] (https://developer.mozilla.org/en-US/docs/Web/API/Node), né '.text()' né '.append () "esiste lì.) – Tomalak

risposta

14

Dal momento che si inizia con il codice DOM puro, io suggerirei di continuare con il codice DOM puro:

var closeSpan = document.createElement("span"); 
closeSpan.setAttribute("class","sr-only"); 
closeSpan.textContent = "Close"; 

In altre parole, è sufficiente impostare textContent sul valore desiderato.

Se la compatibilità con IE 8 o precedenti è importante per voi, notare che textContent non esiste per i vecchi browser. Per quelli più grandi dovresti usare innerText (che funziona su IE 8 ma non fa parte di nessuno standard) o innerHTML. Vedere la pagina MDN su textContent (che collego a sopra) per una discussione delle differenze tra questi campi.

0

Supponendo che si desidera aggiungere il tag "span" ad un div con id "myDiv":

var span = $("span"); // create element span 
$(span).html("your text"); // add text 
$("#myDiv").append($(span)); // append it to the div element 
+0

modifica il tuo codice ... – anni

+0

fatto .. sry per quello – Joe

+0

FYI non c'è bisogno di fare' .append ($ (span)) '. Nel tuo codice, 'span' * è già * un oggetto jQuery,' .append (span) 'andrà bene. Oppure 'span.appendTo (" # myDiv ")'. Questo è anche il motivo per cui la convenzione di denominazione corretta per quella variabile sarebbe stata '$ span'. – Tomalak

1

si può provare questo anche

var closeSpan = document.createElement("span"); 
closeSpan.setAttribute("class","sr-only"); 
closeSpan.html("Close"); 
0

Se si non desidera utilizzare jQuery, si usa closeSpan.appendChild e document.createTextNode in questo modo:

var closeSpan = document.createElement("span"); 
closeSpan.setAttribute("class","sr-only"); 
closeSpan.appendChild(document.createTextNode("Close")); 

Questo metodo ottimizza la compatibilità cross browser. Funzionerà su tutti i browser, incluse le vecchie versioni di IE.

Se fai desidera utilizzare jQuery, si potrebbe fare questo in una sola riga:

var closeSpan = $("<span></span>").addClass("sr-only").text("Close")[0]; 
Problemi correlati