Mootools .get('text')没有按预期工作

时间:2010-10-19 14:37:10

标签: javascript ajax mootools

更新:这适用于firefox,但不适用于chrome 6,仍在调查中。

我正在参加互联网编程课程并学习各种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')获取用户名标记中包含的文本。相反,它返回undefined。

检查user.getElement('username')的值会返回预期的

<username>etomai</username>

运行代码here

尝试在搜索字段中输入字母“e”。

我陷入了困境。有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:2)

对我来说似乎是一个错误。在Firefox上,"text"解析为使用textContent标准的Element属性。

但是,在Chrome上,它会解析为innerText,因为它支持HTML DOM,但不支持XML DOM。但是我们在这里尝试在XML DOM上使用它。

适用于两种浏览器的一种解决方法是,

user.getElement('username').textContent