2010-10-19 5 views
3

Обновление: Это работает в firefox, но не работает на хромированном 6, все еще исследуя.Mootools .get ('текст') не работает должным образом

Я беру класс программирования в Интернете и изучаю различные рамки javascript. Я работаю над проблемой mootools, и метод .get ('text'), похоже, не работает должным образом на responseXML.

Вот 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> 

Вот код:

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(); 

} 

Как указано в комментарии, на линии console.log(... я должен (согласно документации) быть в состоянии получить текст, содержащийся в теге имени пользователя с .get('text'). Вместо этого его возвращение не определено.

Проверка значения user.getElement('username') возвращает ожидаемый

<username>etomai</username> 

Запуск кода, расположенного here

Попробуйте ввести букву «е» в поле поиска.

Я застрял на этом этапе. Любой, кто может указать мне в правильном направлении?

ответ

2

Кажется, это ошибка. В Firefox "text" разрешает использовать свойство textContent, которое является стандартным для Element.

В Chrome, однако, он разрешает innerText, поскольку он поддерживает его для HTML DOM, но не для XML DOM. Но мы пытаемся использовать его на XML DOM здесь.

Один из способов, который должен работать для обоих браузеров,

user.getElement('username').textContent