2014-10-24 15 views
5

Próbuję napisać tekst do elementu z funkcją .text(), ale mam ten błąd UncaughtTypeError: undefined nie jest funkcją, a także wypróbowałem funkcję append(), innerHtml(), createTextNode() bez powodzenia.Jak dodać tekst do zakresu po document.createElement ("span") ;?

Co robię źle?

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

LUB

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

'.text()' jest funkcją jQuery. Użyj 'closeSpan.textContent =" Zamknij ";' Nie wiem, co jest DOMem wersji jQuery '.append()' – Regent

+1

'innerHTML' /' innerText'/'textContent' jest właściwością, a nie funkcją (' span. innerHTML = 'Close''). 'createTextNode' tworzy tylko węzeł tekstowy, nadal musisz go dodać do elementu (' span.appendChild (document.createTextNode ('Close')) '). – hsan

+0

* "Co robię źle?" * - Miksujesz metody jQuery i DOM. Czy możesz wyjaśnić, dlaczego na początku nazywasz 'document.createElement()'? (Zajrzyj także do [dokumentacja obiektów DOM Node] (https://developer.mozilla.org/en-US/docs/Web/API/Node), ani '.text()' ani '.append () 'istnieje.) – Tomalak

Odpowiedz

14

Ponieważ zaczynasz z czystym kodzie DOM, którą proponujemy kontynuowanie czystego kodu DOM:

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

Innymi słowy wystarczy ustawić textContent na żądaną wartość.

Jeśli kompatybilność z IE 8 lub wcześniejszymi sprawami jest dla ciebie ważna, zauważ, że textContent nie istnieje dla starszych przeglądarek. Dla tych starszych musisz użyć innerText (który działa na IE 8, ale nie jest częścią żadnego standardu) lub innerHTML. Zobacz stronę MDN pod numerem textContent (której link do powyższego), aby omówić różnice między tymi polami.

0

Zakładając chcesz dodać "rozpiętość" tag div o identyfikatorze "myDiv":

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

edytuj swój kod ... – anni

+0

zrobione .. sry dla tego – Joe

+0

FYI nie ma potrzeby robienia' .append ($ (span)). W twoim kodzie, 'span' * jest już * obiektem jQuery,' .append (span) 'będzie dobrze. Lub 'span.appendTo (" # myDiv ")'. Jest to również powód, dla którego właściwą konwencją nazewnictwa dla tej zmiennej byłaby '$ span'. – Tomalak

1

Można spróbować to również

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

Jeśli ty nie chcesz użyć jQuery, należałoby użyć closeSpan.appendChild i document.createTextNode tak:

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

Ta metoda zwiększa kompatybilność przeglądarki. Będzie działać we wszystkich przeglądarkach, w tym w starszych wersjach IE.

Jeśli zrobić chcesz użyć jQuery, można zrobić to w jednym wierszu:

var closeSpan = $("<span></span>").addClass("sr-only").text("Close")[0]; 
Powiązane problemy