从循环中的不同元素中获取不同的值

时间:2015-12-26 18:12:06

标签: javascript jquery loops

我有10个html元素。我需要来自8的值属性和来自2个元素的类,并将它们全部放到一个数组中。 Id是关键。

如何用JS或jQuery解决这个问题?

我从.each()开始,但我发现我不能在该循环中使用异常 - 它会对所有元素进行更改。

var myArray = {};

$( '.need-values, .need-classes' ).each( function () {

    myArray[this.id] = $( this ).val();
});

我知道我可以使用2个.each()循环并将值组合到一个数组中,但事实上有些是复选框 - 我需要在循环中使用if语句。

3 个答案:

答案 0 :(得分:2)

在你的循环中,执行此操作

myArray[this.id] = $(this).is('need-values') ? $(this).val() : $(this).attr('class');

如果元素具有need-values类,它将获得值,否则,它将获得类。当然,您可以根据自己的需要选择不同的情况和其他

var myArray = {};

$('.need-values, .need-classes').each(function() {
  myArray[this.id] = $(this).hasClass('need-values') ? $(this).val() : $(this).attr('class');
});

console.log(myArray);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="a" type="checkbox" class="need-values" value="a">
<input id="b" type="checkbox" class="need-values" value="b">
<input id="c" type="checkbox" class="need-values" value="c">
<input id="d" type="checkbox" class="need-classes d" value="d">
<input id="e" type="checkbox" class="need-classes e" value="e">
<input id="f" type="checkbox" class="need-classes f" value="f">

答案 1 :(得分:0)

Query为此提供.map():

Room_Detail

.map()遍历其元素,在每个元素上调用一个函数,并在返回的新数组中记录函数的返回值。 您可以找到文档here

或者你可以用你的方式解决它.each():

var items = $('#main p').map(function () { return $(this).text(); }).get();

或者,如果你想要更多选项,那么另一种方式就是多选择器。您可以找到有关here的文档。

如果你想要一个数组中的元素。例如:

而不是:

var items = [];

    $('#main p').each(function (i, e) {
      items.push($(e).text());
    });

有这个:

<div id="main">
<p>Text1</p>
<p>Text2</p>
<p>Text3</p>
</div>

答案 2 :(得分:0)

首先为所有10个元素提供一个共同的class(例如common-class)。

那么你可以这样做......

var array=[];
$(".common-class").each(function(){
      if(this.tagName=="DIV"){
         array.push($(this).attr("value"));
      }
      if(this.tagName=="INPUT" && $(this).attr("type")=="checkbox"){
        array.push($(this).attr("class"));
      }
      ..................and so one
})