【问题标题】:Iterate over DOM elements in DalekJS在 DalekJS 中迭代 DOM 元素
【发布时间】:2014-07-23 16:42:32
【问题描述】:

有谁知道使用 API 迭代和操作与查询匹配的所有元素的简单方法?

我最简单的用例是这样的——不是真正的代码,但希望你知道我在寻找什么。

test.query('textarea').each(function(v, i){
  this.type(v.id, 'test' + i);
});

我可以使用任意 JS exec、jQuery 等来做到这一点。我只是认为这是 Dalek 可能会做的事情,我错过了

谢谢!

编辑

原来我的 JS 执行备份不起作用...

test
  .execute(function(){
    var textareaIds = [];
    (function($){
      $('textarea').each(function(){
        textareaIds.push($(this).attr('id'));
      });

    })(window.jQuery);
    this.data('textareaIds', textareaIds);
  });

但可能由于代码如何排队然后执行的性质,您不能在之后的 for 循环中使用该数组。我错过了什么吗?

【问题讨论】:

    标签: javascript dalekjs


    【解决方案1】:

    我们将在即将发布的 DalekJS 版本中改进 API 会话,因此作为测试的一部分,迭代 DOM 元素以及在客户端执行的 JavaScript 与在服务器上执行的 JavaScript 之间的交互将变得非常困难。

    关于您不工作的执行示例。之后,您不能只在 Node 代码中使用通过 this.data 传递的数据,您需要将其添加到链中。由于这是一个非常实验性的功能,我们并没有真正实现以后可以处理数据的 API。

    您可以做的一件事就是像这样滥用log.message 方法:

    .execute(// your code)
    .log.message(function () {
      // get the data
      var myArray = test.data('textareaIds');
      // do something with it
      require('fs').writeFileSync('myFile.txt', JSON.stringify(myArray));
    })
    

    我想这不是您想要/需要的,但是重用该数据进行进一步的测试和断言是不可能的。但我们正在努力。

    【讨论】:

    • 谢谢塞巴斯蒂安。我想在特定的 dom 元素中输入特定的文本。离开并返回以测试自动保存功能(只是一个示例)。读了一点 DalekJS 我可以看到它不起作用。我会密切关注你的 v2 :) 祝你一切顺利
    猜你喜欢
    • 2012-08-04
    • 1970-01-01
    • 2012-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多