我有多个按钮和输入。我试图将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);
}
答案 0 :(得分:3)
所以,如果没有文字,请按值而不是
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;
或者如果您使用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 );