2009-08-31 5 views
2

donc je sais qu'il est assez facile d'échanger des images de balises img nomméesmoyens alternatifs pour obtenir l'image src en utilisant JavaScript

<img name="image1" src="" /> 
<script>document["image1"].src="candybar.jpg";</script> 

Le problème est que je suis forcé d'utiliser le serveur de contenu, et je peux » t nommez l'étiquette de l'image. Donc, si je nomme une étiquette Div qui entoure l'image, puis-je l'utiliser pour spécifier l'étiquette d'image en question?

Quelque chose comme ..

<div id="namedDiv"><img src="" /></div> 
<script> 
    var imgDiv=document.getElementById['namedDiv']; 
    imgDiv.$imgtag$.src="candybar.jpg"; 
</script> 

Alors parce que je sais que le parent, et il a seulement 1 tage d'image à l'intérieur, je veux dire « hey Div, donnez-moi votre seul enfant comme un objet »

+1

'element.firstChild' –

+0

Sur la base de la réponse de djko, voici ma solution finale [code] [/ code] – Eddie

Répondre

2

Chaque noeud dom a une propriété childNodes qui est un tableau de noeuds. Vous pouvez choisir le premier.

<script> 
    var imgDiv=document.getElementById['namedDiv']; 
    imgDiv.childNodes[0].src="candybar.jpg"; 
</script> 
+0

Bizarre, même si mon html ressemble;

Je devais utiliser un indice de 1. Je me demande si l'espace insécable compte comme un nœud? ou si l'index commence juste à 1. – Eddie

+0

oui - c'est le noeud de texte :) –

+0

dans ce cas peut-être qu'il est préférable d'utiliser getElementsByTagName ('img') [0] juste pour être sûr –

4

Oui qui suit, quelque chose comme:

document.getElementById('namedDiv').getElementsByTagName('img')[0].src = 'mynewpath.jpg'; 
1

Selon le balisage et le navigateur, l'élément <img> peut ne pas être le seul enfant. Par exemple, s'il existe des espaces tels qu'un saut de ligne, de nombreux navigateurs autres que IE créeront un nœud de texte.

Le plus simple est d'utiliser la méthode getElementsByTagName de l'élément d'emballage, qui retourne un NodeList et obtenir le premier élément de ce NodeList:

var div = document.getElementById("namedDiv"); 
var image = div.getElementsByTagName("img")[0]; 
image.src = "candybar.jpg"; 

Vous pouvez réduire que si vous ne me dérange pas faire légèrement plus difficile à suivre:

document.getElementById("namedDiv").getElementsByTagName("img")[0].src = "candybar.jpg"; 

mais qui le rend un peu plus difficile à déboguer quand vous faites une erreur ;-)

Questions connexes