dojo.query()返回什么?

时间:2009-10-09 08:49:47

标签: dojo

我刚刚开始使用dojo,我知道dojo.query与jQuery中的$相同。

但我还没弄清楚它的回归。它是像jQuery中的专用对象吗?

我想做的事情(没有运气)是:

dojo.query("output").innerHTML = data;
//this doesn't work either:
dojo.query("output").html(data);
//tried accessing by id as well
dojo.query("#output").html(data);
//and tried to access a div, incase dojo has some issues with html5 elements
dojo.query("#divOutput").html(data);

我目前正在使用新的html5 elements

<output id="output">Output goes here</output>
<div id="divOutput">non-html5 output goes here</div>

我似乎无法找到关于如何处理dojo.query()返回的对象的好列表。

编辑好的,我觉得道场现在只是搞砸了我。我找到了这个方法:addContent(),它适用于上面的选择器。但我不想添加内容,我想替换内容......

6 个答案:

答案 0 :(得分:3)

query方法返回一个NodeList对象。

NodeList的参考号中,您可以找到可应用于列表的功能列表 元素。列表没有innerHTML函数,但html函数应该可以工作。

HTML中没有“output”元素,也许您尝试使用类名“output”来定位元素?

dojo.query(".output").html(data)

或者id为“output”的元素?

dojo.query("#output").html(data)

答案 1 :(得分:3)

如果你想用相同的东西替换所有输出标签的内容,那么这段代码应该始终有效:

// replace the contents of ALL <output> tags
dojo.query('output').forEach(function(node) { node.innerHTML = data; });

Dojo还为这些事情提供了一点捷径。您可以为NodeList的forEach函数指定一个字符串,如下所示:

// replace the contents of ALL <output> tags (as long as data is global)
dojo.query('output').forEach("item.innerHTML = data;");

字符串中的单词 item 是特殊的。 (调试很麻烦,所以可能不值得。)

答案 2 :(得分:1)

如上所述,query方法返回NodeList对象,因此您可以将其结果作为数组进行迭代,或者使用与NodeList一起使用的dojo方法(例如attr):

dojo.query("#divOutput").attr("innerHTML", data);

但是一旦你试图通过id查询节点,最好使用dojo.byId()方法,它返回domNode:

dojo.byId("divOutput").innerHTML = data;

或者更多的道场风格:

dojo.attr(dojo.byId("divOutput"), "innerHTML", data)

答案 3 :(得分:1)

尝试添加[0],如下所示:

dojo.query("output")[0].innerHTML = data;

答案 4 :(得分:0)

此外,还有一个dojox.jq包装器(在开发中,将在1.4中)模拟JQuery返回对象API

答案 5 :(得分:0)

文档似乎很乱,这是我唯一能使用1.7,

dojo.query("whatever").forEach(function(node, index, array)
{
    node...
});