2010-07-28 3 views
0

J'utilise l'API Google Image Search et j'ai largement copié ce code, qui génère les résultats de la recherche dans ma page.Je ne peux pas définir les attributs title et alt dans mon img en utilisant javascript

for (var i = 0; i < results.length; i++) { 
    // For each result write it's title and image to the screen 
    var result = results[i]; 
    var linkContainer = document.createElement('div'); 

    var title = document.createElement('div'); 
    // We use titleNoFormatting so that no HTML tags are left in the title 
    title.innerHTML = result.titleNoFormatting; 

    var newImg = document.createElement('img'); 

    newImg.src = result.tbUrl; 
    newImg.className = 'googleSearchResult'; 
    newImg.title = 'newTitle'; 
    newImg.alt = 'newAlt'; 

    var newLink = document.createElement('a'); 
    newLink.href = "temp_url";    

    newLink.appendChild(newImg); 
    contentDiv.appendChild(newLink); 
} 

Dans les lignes suivantes,

newImg.src = result.tbUrl; 
newImg.className = 'googleSearchResult'; 
newImg.title = 'newTitle'; 
newImg.alt = 'newAlt'; 

les deux premiers, qui a fixé le src de l'image et la classe, fonctionnent très bien, mais les deux secondes, ce qui devrait définir le titre et alt de l'image, ne travaille pas du tout. Quelqu'un peut-il voir pourquoi cela se produirait? Merci d'avoir lu.

EDIT: Voici le code HTML lors de l'inspection dans Firefox par Firebug:

<img alt="" src="http://images.google.com/images?q=tbn:_HZix2CrLSLSOM::bestonlinetvseries.com/deadwood/deadwood_s01.jpg" class="googleSearchResult"> 

Voici le code HTML lors de l'inspection dans Google Chrome

<img alt src="http://images.google.com/images?q=tbn:_HZix2CrLSLSOM::bestonlinetvseries.com/deadwood/deadwood_s01.jpg" class="googleSearchResult"> 

EDIT: Ce que je suis en train de faire Ici, stockez un peu plus de données dans le code HTML de l'image, à utiliser ultérieurement dans un plugin jQuery. Si n'importe qui peut suggérer une manière alternative de faire ceci, ce serait grand aussi bien.

+0

J'ai supprimé ma réponse car elle ne semblait pas aider. En fait ce n'était pas totalement correct car un élément d'image DOM a en effet une propriété 'alt'. Désolé. –

+0

Pas de soucis, merci Felix – ben

+3

N'utilisez jamais 'getAttribute' /' setAttribute' sur les documents HTML. Il est moins lisible que la méthode d'accès aux propriétés plain, et de nombreux attributs sont bogués dans IE. – bobince

Répondre

1

En réponse à votre dernière modification: si vous essayez simplement de stocker des données associées à une image pour une utilisation ultérieure, vous pouvez utiliser la méthode data de jQuery.

3

Je soupçonne que le problème est ailleurs. Tenez compte this example, qui fonctionne très bien dans les navigateurs que j'ai testé (Firefox, Chrome, IE):

var link = document.createElement("a"); 
link.href = "http://stackoverflow.com"; 

var img = document.createElement("img"); 
img.title="Hello"; 
img.alt="alt Hello"; 
img.src="http://jsfiddle.net/img/sprites.png"; 
link.appendChild(img); 
document.body.appendChild(link); 

alert(img.getAttribute("alt")); 
alert(img.getAttribute("title")); 

Je recommande de vérifier pour voir si quelque chose peut-être devant le lien/élément img, comme cela arrêter une info-bulle d'apparaître en vol stationnaire.

+0

Merci pour votre réponse. Je ne peux vraiment pas comprendre ce que je fais de mal. J'inspecte l'élément dans Firebug, et ça dit alt = "" et il n'y a aucune mention de titre du tout. – ben

+0

@ben: est-ce la même chose dans les autres navigateurs? Google Chrome a un inspecteur (Ctrl + Maj + I), IE a des outils de développement (F12). –

+0

J'ai modifié la question d'origine pour afficher la sortie de l'inspecteur Google Chrome. – ben

1

Essayez:

img.setAttribute('title', 'someTitle'); 

Appearantly, il y a une différence entre 'propriétés' et 'attributs' dans les scripts DOM.

Questions connexes