代码之家  ›  专栏  ›  技术社区  ›  peirix

dojo.query()返回什么?

  •  6
  • peirix  · 技术社区  · 15 年前

    我刚开始学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 回复  |  直到 12 年前
        1
  •  3
  •   Guffa    15 年前

    查询方法返回一个nodelist对象。

    在参考文献中 NodeList 您可以找到可以应用于列表的函数列表 元素的列表没有innerhtml函数,但是html函数应该可以工作。

    HTML中没有“output”元素,也许您试图将类名为“output”的元素作为目标?

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

    或者ID为“output”的元素?

    dojo.query("#output").html(data)
    
        2
  •  3
  •   tommyjr    15 年前

    如果你想替换 全部的 输出标记的内容相同,则此代码应始终有效:

    // 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;");
    

    单词 项目 在字符串中是特殊的。(这是调试的痛苦,因此可能不值得这样做。)

        3
  •  1
  •   ivalkeen    15 年前

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

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

    但是,一旦尝试按ID查询节点,最好使用dojo.by id()方法,该方法返回domnode:

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

    或者更多Dojo风格:

    dojo.attr(dojo.byId("divOutput"), "innerHTML", data)
    
        4
  •  1
  •   axel22    13 年前

    通过添加 [0] 这样地:

    dojo.query("output")[0].innerHTML = data;
    
        5
  •  0
  •   peller    15 年前

    另外,还有一个dojox.jq包装器(在开发中,在1.4中提供),它模拟jquery返回对象API

        6
  •  0
  •   nylund    12 年前

    文档看起来一团糟,这是我唯一能使用1.7的东西,

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