我刚刚开始使用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()
,它适用于上面的选择器。但我不想添加内容,我想替换内容......
答案 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...
});