J'ai besoin de définir le texte dans un élément DIV de manière dynamique. Quelle est la meilleure approche sécurisée pour le navigateur? J'ai des prototypes et des scriptaculous disponibles.
<div id="panel">
<div id="field_name">TEXT GOES HERE</div>
</div>
Voici à quoi ressemblera la fonction:
function showPanel(fieldName) {
var fieldNameElement = document.getElementById('field_name');
//Make replacement here
}
javascript
html
dom
sblundy
la source
la source
Réponses:
J'utiliserais la
update
méthode de Prototype qui prend en charge le texte brut, un extrait de code HTML ou tout objet JavaScript qui définit unetoString
méthode.la source
$("field_name").text("new text");
Vous pouvez simplement utiliser:
la source
element.innerHTML = "<script>doSomethingMalicious()</script>";
ne sera pas une bonne idée.element.innerHTML = "& neither will this";
Mis à jour pour tous ceux qui liront ceci en 2013 et après:
Cette réponse a beaucoup de SEO, mais toutes les réponses sont sérieusement obsolètes et dépendent des bibliothèques pour faire des choses que tous les navigateurs actuels font hors de la boîte.
Pour remplacer du texte à l'intérieur d'un élément div, utilisez Node.textContent, qui est fourni dans tous les navigateurs actuels.
la source
textContent
est une méthode supérieure pourinnerHTML
: c'est plus rapide, plus sûr et plus approprié lorsque vous n'essayez pas délibérément d'insérer du balisage HTML.Les avantages de le faire de cette façon:
Si j'allais utiliser une bibliothèque javascript, j'utiliserais jQuery et ferais ceci:
Notez que le commentaire de @AnthonyWJones est correct: "field_name" n'est pas un identifiant ou un nom de variable particulièrement descriptif.
la source
L'une des fonctionnalités intéressantes de Prototype est qu'il
$('field_name')
fait la même chose quedocument.getElementById('field_name')
. Utilise le! :-)La réponse de John Topley en utilisant la
update
fonction de Prototype est une autre bonne solution.la source
$
recherche un élément par ID. Ce n'est pas basé sur un sélecteur comme jQuery. api.prototypejs.org/dom/dollarLa réponse rapide est d'utiliser innerHTML (ou la méthode de mise à jour du prototype qui est à peu près la même chose). Le problème avec innerHTML est que vous devez échapper au contenu attribué. En fonction de vos objectifs, vous devrez le faire avec un autre code OU
dans IE: -
en FF: -
(En fait, les FF ont les éléments suivants présents par code)
Maintenant, je peux simplement utiliser innerText si vous avez besoin d'une prise en charge de navigateur la plus large possible, ce n'est pas une solution complète, mais l'utilisation de innerHTML non plus dans le brut.
la source
Si vous voulez vraiment que nous continuions là où vous vous êtes arrêté, vous pouvez faire:
la source
nodeValue est également une propriété DOM standard que vous pouvez utiliser:
la source
la source
Si vous êtes enclin à commencer à utiliser beaucoup de JavaScript sur votre site, jQuery rend le jeu avec le DOM extrêmement simple.
http://docs.jquery.com/Manipulation
Le rend aussi simple que: $ ("# field-name"). Text ("Some new text.");
la source
Utilisez innerText si vous ne pouvez pas assumer la structure - Utilisez les données Text # pour mettre à jour le test de performance du texte existant
la source
la source
Voici un moyen simple de jQuery :
la source
En HTML, mettez ceci
En Javascript, mettez ceci
la source