如果在JS中innerText为空,则将输入的值推送到数组

时间:2018-02-26 16:01:31

标签: javascript jquery

我有多个按钮和输入。我试图将innerText推送到数组。由于我需要指定不同类型的标签,如果'选择输入的值或按钮的innerText。

这是我到目前为止所做的:

if ($("#dragulaContainer2").children().length > 0) {
  var arraySelected = [];
  var children = $('#dragulaContainer2').children();

  for (var i = 0; i < children.length; i++) {
    arraySelected.push(children[i].innerText);
  }
  console.log(arraySelected);
}

我背后的非编码逻辑是:

如果儿童的内部文本等于&#34;&#34;而不是取值。

但是如何构建代码?并将其添加到innerText行,如同语句一样?

添加了这个,但它无效......

if ($("#dragulaContainer2").children().length > 0) {
  var arraySelected = [];
  var children = $('#dragulaContainer2').children();

  for (var i = 0; i < children.length; i++) {

    arraySelected.push(children[i].(if (innerText === "") {
      val
    } else {
      innerText
  });
}
console.log(arraySelected);
}

1 个答案:

答案 0 :(得分:3)

所以,如果没有文字,请按而不是

&#13;
&#13;
var arraySelected = $("#dragulaContainer2").find(":input").map(function() {
  return this.textContent || this.value;
}).get();

console.log( arraySelected );
&#13;
<div id="dragulaContainer2">
  <input value="0">
  <input value="test 1">
  <span>test 2</span>
  <textarea>test 3</textarea>
  <p>test 4</p>
  <button>btn text</button>
  <button value="btn val">use text</button>
  <button value="use value"></button>
</div>



<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
&#13;
&#13;

或者如果您使用ES6,您可以&#34;缩短&#34;到

$("#dragulaContainer2").find(":input").map((i,el) => el.textContent || el.value).get();

使用if else样式编码,它看起来像:

var $inp = $("#dragulaContainer2").find(":input");
var arraySelected = [];

$inp.each(function(){
    if(this.textContent) {
      arraySelected.push(this.textContent);
    } else {
      arraySelected.push(this.value);
    }
});  

console.log( arraySelected );