更新:这适用于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”。
我陷入了困境。有人能指出我正确的方向吗?
答案 0 :(得分:2)
对我来说似乎是一个错误。在Firefox上,"text"
解析为使用textContent
标准的Element
属性。
但是,在Chrome上,它会解析为innerText
,因为它支持HTML DOM,但不支持XML DOM。但是我们在这里尝试在XML DOM上使用它。
适用于两种浏览器的一种解决方法是,
user.getElement('username').textContent