Muszę dynamicznie ustawić tekst w elemencie DIV. Jakie jest najlepsze, bezpieczne podejście do przeglądarki? Mam dostępne prototypejs i scriptaculous.
<div id="panel">
<div id="field_name">TEXT GOES HERE</div>
</div>
Oto jak będzie wyglądać funkcja:
function showPanel(fieldName) {
var fieldNameElement = document.getElementById('field_name');
//Make replacement here
}
javascript
html
dom
sblundy
źródło
źródło
Odpowiedzi:
Użyłbym
update
metody Prototype, która obsługuje zwykły tekst, fragment kodu HTML lub dowolny obiekt JavaScript, który definiujetoString
metodę.źródło
$("field_name").text("new text");
Możesz po prostu użyć:
źródło
element.innerHTML = "<script>doSomethingMalicious()</script>";
nie będzie dobrym pomysłem.element.innerHTML = "& neither will this";
Zaktualizowano dla wszystkich, którzy to czytają w 2013 i później:
Ta odpowiedź ma dużo SEO, ale wszystkie odpowiedzi są poważnie nieaktualne i zależą od bibliotek, aby robić rzeczy, które wszystkie obecne przeglądarki robią po wyjęciu z pudełka.
Aby zamienić tekst w elemencie div, użyj Node.textContent, który jest dostępny we wszystkich obecnych przeglądarkach.
źródło
textContent
jest lepszą metodą niżinnerHTML
: jest szybsza, bezpieczniejsza i bardziej odpowiednia, gdy nie próbuje się celowo wstawiać znaczników HTML.Zalety zrobienia tego w ten sposób:
Gdybym miał użyć biblioteki javascript, użyłbym jQuery i zrobiłbym to:
Zwróć uwagę, że komentarz @AnthonyWJones jest poprawny: „nazwa_pola” nie jest szczególnie opisowym identyfikatorem ani nazwą zmiennej.
źródło
Jedną z fajnych funkcji Prototype jest
$('field_name')
to samo, codocument.getElementById('field_name')
. Użyj tego! :-)Odpowiedź Johna Topleya wykorzystująca
update
funkcję Prototype to kolejne dobre rozwiązanie.źródło
$
wyszukuje element według identyfikatora. Nie jest oparty na selektorach, jak jQuery. api.prototypejs.org/dom/dollarSzybką odpowiedzią jest użycie innerHTML (lub metody update prototypu, która prawie to samo). Problem z innerHTML polega na tym, że musisz uciec od przypisywanej treści. W zależności od celów będziesz musiał to zrobić z innym kodem LUB
w IE: -
w FF: -
(Właściwie FF mają następujący kod obecny)
Teraz mogę po prostu użyć innerText, jeśli potrzebujesz najszerszej możliwej obsługi przeglądarki, to nie jest to kompletne rozwiązanie, ale też nie używa innerHTML w surowym.
źródło
Jeśli naprawdę chcesz, abyśmy kontynuowali od miejsca, w którym skończyłeś, możesz zrobić:
źródło
nodeValue jest również standardową właściwością DOM, której możesz użyć:
źródło
źródło
Jeśli jesteś skłonny zacząć używać dużo JavaScript w swojej witrynie, jQuery sprawia, że zabawa z DOM jest niezwykle prosta.
http://docs.jquery.com/Manipulation
Czyni to tak prostym jak: $ ("# nazwa-pola"). Text ("Jakiś nowy tekst.");
źródło
Użyj innerText, jeśli nie możesz przyjąć struktury - użyj danych Text #, aby zaktualizować test wydajności istniejącego tekstu
źródło
źródło
Oto prosty sposób na jQuery :
źródło
W HTML umieść to
W JavaScript umieść to
źródło