2010-10-19 5 views
3

Mise à jour: Cela fonctionne dans Firefox, mais ne fonctionne pas sur Chrome 6, toujours en cours d'investigation.Mootools .get ('text') ne fonctionne pas comme prévu

Je prends une classe de programmation internet et j'apprends divers frameworks javascript. Je travaille sur un problème mootools, et la méthode .get ('text') ne semble pas fonctionner comme prévu sur responseXML.

Voici le responseXML:

<?xml version="1.0" encoding="UTF-8"?> 
<users> 
     <user> 
      <username>etomai</username> 
      <first_name>Joe</first_name> 
      <last_name>Smith</last_name> 
     </user> 
     <user> 
      <username>hehhh</username> 
      <first_name>hee</first_name> 
      <last_name>lkii</last_name> 
     </user> 
</users> 

Voici le code:

function update_list() { 
    var req = new Request({ 
     url: 'users.php', 
     method: 'get', 
     data: { 
      'term': $('search').value 
     }, 
     onComplete: function(responseText, responseXML){ 
      $('list').empty(); 
      responseXML.documentElement.getElements('user').each(function(user){ 
       //this seems like it should work according to all mootools docs, but it doesn't. user.getElement('username').get('tag') works, but neither 'html' or 'text' work...retuturning undefineds. 
       console.log(user.getElement('username').get('text')); 
       var copy = $('template').clone(); 
       $('list').grab(copy); 
       $(copy).removeClass('hidden'); 
       $(copy).getChildren()[0].set("text", "username goes here") 
       $(copy).getChildren()[1].set("text", "name goes here") 
      }) 

     } 
    }).send(); 

} 

Comme indiqué dans le commentaire, sur la ligne console.log(... je (selon la documentation) être en mesure d'obtenir le texte contenu dans la balise de nom d'utilisateur avec .get('text'). Au lieu de cela, son retour indéfini.

Vérification de la valeur de user.getElement('username') renvoie l'attendu

<username>etomai</username> 

Exécution de code situé here

Essayez d'entrer la lettre "e" dans le champ de recherche.

Je suis bloqué à ce stade. Quelqu'un peut-il me diriger dans la bonne direction?

Répondre

2

Ça me semble être un bug. Sur Firefox, "text" résout d'utiliser la propriété textContent qui est standard pour un Element.

Sur Chrome, cependant, il se résout à innerText car il le prend en charge pour HTML DOM, mais pas pour XML DOM. Mais nous essayons de l'utiliser sur un DOM XML ici.

Une solution qui devrait fonctionner pour les deux navigateurs est,

user.getElement('username').textContent 
Questions connexes