2010-12-05 23 views
7

C'est facile dans jquery mais qu'en est-il de javascript plaine?javascript obtenir html ou texte de div

Le code est pour l'API de recherche d'images Google. Je veux rechercher des images qui correspondent au html ou de préférence le texte à l'intérieur d'un div.

var searchThis = document.getElementById('imgToFind'); //get HTML, or text from div 

// Find images 
imageSearch.execute(searchThis); //search image 

Le code HTML

<div id="imgToFind">PlayStation</div> 

Le résultat devrait être des images de playstation. Au lieu de cela, je reçois ces

1 Dosic OIS - 123

alt text IE8 javascript retourne [objet HTMLDivElement] au lieu [

alt text Aimer la main

et d'autres images non pertinentes. Je me demande ce que Google recherche .. pense que le second me donne un indice.

Répondre

16

son var searchThis = document.getElementById('imgToFind').innerHTML;

pour extraire uniquement le texte que vous pouvez faire:

element = document.getElementById('imgToFind'); 
var searchThis = element.textContent || element.innerText; 
+1

THX! Y at-il une chose comme '.text()' comme dans jquery? –

+0

Merci! J'ai décidé d'utiliser js simple parce que le google api n'utilise pas jquery. Je pensais que je ferais tout en un seul script. J'ai juste besoin de quelques fonctions simples. –

+1

Non, vous n'avez pas besoin d'un analyseur pour extraire le texte d'un élément DOM. Vous pouvez utiliser la propriété 'textContent' ou' innerText' de l'élément selon ma réponse ou parcourir le DOM et fusionner le texte de chaque noeud de texte rencontré. Ce n'est pas si difficile et ne nécessite pas de jQuery. –

2

var searchThis = document.getElementById('imgToFind').innerHTML;

va saisir le contenu de l'élément :)

+0

Thx! On dirait que vous avez répondu en même temps lol. Votera la personne qui répondra à la question de bonus. Y at-il une chose comme '.text()' dans javascript comme il y a dans jquery? –

+1

Désolé, je ne suis pas trop sûr de celui-là honnêtement :) –

2

Si vous voulez juste le texte dans un élément, vous pouvez utiliser textContent dans les navigateurs plus conformes aux normes (ie pas IE) et innerText dans IE. They're not identical in all cases mais pour vos fins ils peuvent bien être.

var el = document.getElementById("foo"); 
var text = el.textContent || el.innerText; 
+0

brillant! Merci! –