Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 迭代多个div并将信息提取到数组中?_Javascript_Jquery_Html - Fatal编程技术网

Javascript 迭代多个div并将信息提取到数组中?

Javascript 迭代多个div并将信息提取到数组中?,javascript,jquery,html,Javascript,Jquery,Html,我有一个页面,上面有几个像这样的div <div class="market_listing_row" id="12345"> ... <div class="priceblock"> <span class="price">0,0</span> </div> </div> 如何迭代这些div?我试图用jQuery和原始JS来实现它,但失败了 编辑: 显然,CasperJS和jQuery一起造成了混乱,可能是因为

我有一个页面,上面有几个像这样的div

<div class="market_listing_row" id="12345">
 ...
 <div class="priceblock">
  <span class="price">0,0</span>
 </div>
</div>
如何迭代这些div?我试图用jQuery和原始JS来实现它,但失败了

编辑: 显然,CasperJS和jQuery一起造成了混乱,可能是因为“this”。无论是哪种方式,我都找到了使用casper模块方法解决问题的方法:

 var price = this.fetchText('div.market_listing_row .price').split('\n');
var id = this.getElementsAttribute('div.market_listing_row', 'id');
这将创建两个数组:用于价格和ID

试试看

xResult = [];

$('.market_listing_row').each(function(){

   var xJson = {};
   xJson.id = $(this).attr('id');
   xJson.price = $(this).find('.price').text();

   xResult[xResult.length] = xJson;

});
试试看

我建议:

var objArray = $('.market_listing_row').map(function () {
    return {
        'id': this.id,
        'price': $(this).find('.price').text()
    };
}).get();

参考资料:

    • 我建议:

      var objArray = $('.market_listing_row').map(function () {
          return {
              'id': this.id,
              'price': $(this).find('.price').text()
          };
      }).get();
      

      参考资料:

      我使用下面的代码制作了一个关于fiddle的非常基本的示例

      var arr = [];
      $('.market_listing_row').each(function(){
          id = $(this).attr('id');
          price = $(this).find('.price').text();
          arr.push({id: id, price: price});
      });
      
      如果你有任何问题,请告诉我。希望这有帮助

      我使用下面的代码制作了一个关于fiddle的非常基本的示例

      var arr = [];
      $('.market_listing_row').each(function(){
          id = $(this).attr('id');
          price = $(this).find('.price').text();
          arr.push({id: id, price: price});
      });
      
      如果你有任何问题,请告诉我。希望这有帮助

      hi,将本机(原始js)版本加入混合

      借助于:

      function $class(str,_scope) {
        if(!_scope) { _scope=document; }
          var elems = _scope.getElementsByTagName('*'), elArray =[];
          var len=elems.length;
            for (var cnt = 0; cnt < len; ++cnt) {
              if((' ' + elems[cnt].className + ' ').indexOf(' ' + str + ' ') > -1) {
                   elArray.push(elems[cnt]);
              }
            }
            return elArray;
        }
      
      函数$class(str,\u范围){
      如果(!\u scope){\u scope=document;}
      var elems=_scope.getElementsByTagName('*'),elArray=[];
      var len=元素长度;
      对于(var cnt=0;cnt-1){
      elArray.push(elems[cnt]);
      }
      }
      回程线;
      }
      
      为适应标记设置,可以如下使用:

      function getPriceObjects() {
          var marketrows = $class("market_listing_row"), marketArray=[];
          for (var i = 0, len=marketrows.length; i < len; ++i) {
           var id = marketrows[i].getAttribute("id");
           var price = $class("price",marketrows[i])[0].innerHTML;
              marketArray.push({ id: id, price: price});
           }
          return marketArray;
      }
      
      var marketPriceArray = getPriceObjects();
      
      函数getPriceObjects(){ var marketrows=$class(“market_listing_row”),marketArray=[]; 对于(变量i=0,len=marketrows.length;ihi,将本机(原始js)版本加入混合

      借助于:

      function $class(str,_scope) {
        if(!_scope) { _scope=document; }
          var elems = _scope.getElementsByTagName('*'), elArray =[];
          var len=elems.length;
            for (var cnt = 0; cnt < len; ++cnt) {
              if((' ' + elems[cnt].className + ' ').indexOf(' ' + str + ' ') > -1) {
                   elArray.push(elems[cnt]);
              }
            }
            return elArray;
        }
      
      函数$class(str,\u范围){
      如果(!\u scope){\u scope=document;}
      var elems=_scope.getElementsByTagName('*'),elArray=[];
      var len=元素长度;
      对于(var cnt=0;cnt-1){
      elArray.push(elems[cnt]);
      }
      }
      回程线;
      }
      
      为适应标记设置,可以如下使用:

      function getPriceObjects() {
          var marketrows = $class("market_listing_row"), marketArray=[];
          for (var i = 0, len=marketrows.length; i < len; ++i) {
           var id = marketrows[i].getAttribute("id");
           var price = $class("price",marketrows[i])[0].innerHTML;
              marketArray.push({ id: id, price: price});
           }
          return marketArray;
      }
      
      var marketPriceArray = getPriceObjects();
      
      函数getPriceObjects(){ var marketrows=$class(“market_listing_row”),marketArray=[]; 对于(变量i=0,len=marketrows.length;i1 thing,[{id:12345,price:0,0}]无效,需要将其设置为字符串-[{id:12345,price:0,0}]1 thing,[{id:12345,price:0,0}]无效,需要将其设置为字符串-[{id:12345,price:0,0}]为什么在导航孩子时使用'this'。id,'$(this)。@Euphe它将成为一个Jquery对象,这样您就可以使用Jquery函数了。我尝试了您的解决方案,当我这样做时。echo(array.length)输出0真的吗?然后显示一个实时演示(更新我自己的演示,单击“保存”并与我们共享链接,以显示您正在做什么,以及如何做),我将尝试解释如何工作,或者您做错了什么。为什么要使用id为“$”的“this.”,但使用“$”(this)。@在导航孩子时,如果使用$()将其包装为Jquery对象,这样你就可以使用Jquery函数了。我试过你的解决方案,当我这么做的时候。echo(array.length)它会输出0真的吗?然后显示一个实时演示(更新我自己的演示,单击“保存”并与我们共享链接,以显示您正在做什么,以及如何做),我将尝试解释如何工作,或者您做错了什么。您好,Euphe,您是否包括名为$class的顶级功能?-您好,Euphe,您是否包含名为$class的顶级函数-