如何避免多次检查不同的条件

时间:2017-12-13 09:09:00

标签: jquery oop if-statement

我的代码中有多个if语句,如下所示:

if ($('#text1').val().length == 0) {
    $('#text1').val(text1);
}
if ($('#text2').val().length == 0) {
    $('#text2').val(text2);
}
if ($('#text3').val().length == 0) {
    $('#text3').val(text3);
}
if ($('#text4').val().length == 0) {
    $('#text4').val(text4);
}
if ($('#text5').val().length == 0) {
    $('#text5').val(text5);
}
if ($('#text6').val().length == 0) {
    $('#text6').val(text6);
}

因此,根据要求,我需要检查文本框中是否有值,然后不要覆盖API响应,否则请编写API响应。有没有办法避免这些if提高性能?

5 个答案:

答案 0 :(得分:1)

如果由于某种原因你不能使用公共类或属性选择器,那么逻辑将是:

$('[id^=text]').val(function(){
  return this.value.length ? this.value : data[this.id];
});



var data = {
  text1: 1,
  text2: 2,
  text3: 3
}

$('[id^=text]').val(function(){
  return this.value.length ? this.value : data[this.id];
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="text1" value="">
<input id="text2" value="">
<input id="text3" value="ok">
&#13;
&#13;
&#13;

答案 1 :(得分:1)

使用each方法和[attribute^=value]选择器:

$("[id^=text]").each(function(){
    if ($(this).val().length == 0) {
        $(this).val($(this).attr(id));
    }
)

答案 2 :(得分:0)

尝试:

{{1}}

答案 3 :(得分:-1)

你可以尝试使用像:

这样的循环
var textN = [text1,text2,text3,text4,text5,text6];

for(var i = 1; i <= textN.length; i++){
    var textID = '#text' + i;
    if ($(textID).val().length == 0) {
        $(textID).val(textN[i - 1]);
    }
}

答案 4 :(得分:-1)

var i=0;
while(i<elementcount)
{
  if($('#text'+i).val().length == 0)
    if($('#text'+i).val(textarray[i]);
  i++;
}

但首先要定义元素计数和textarray。希望这个概念有所帮助