简体   繁体   中英

Javascript if - else if inside switch using (“#id”).length

Code edited. Apologizes for the incomplete first code I've this code that takes input from the user, and it appends an image that matches that input. What I want to do is to set different buttons (200 aprox.) to append a different image if other button is pressed. The approaching I'm doing for this is to target the first if, within the first switch case, with the ("#id").length condition. This is a short example of my code:

HTML:

<!DOCTYPE html>
<html>
<head>
<title></title>
<script src="https://code.jquery.com/jquery-3.1.1.js"></script>
</head>
<body>

  <section id="section">
    <input id="input">
    <button id="1"></button>
    <button id="2"></button>
  </section>

 <div id="div"></div>
</body>
</html>

Javascript:

$(document).ready(function() {
var str;
$("#1, #2").click(function () { test(); });
});

var input = ['a','b','c'];

function test() {

var interval = setInterval(match, 1);
$("div").html("");
str = $("input").val().toLowerCase();
var i = 0;    

function match() {

    var imgs = ["<img src='https://1.bp.blogspot.com/-v2N2hPY33pc/V488gHu5aWI/AAAAAAAAHFM/loGVDK5OlGcft5UUz8-AHZjAd3E7OlZjACLcB/s1600/colorful-background-with-waves.jpg' alt='0'>",
                "<img src='https://upload.wikimedia.org/wikipedia/commons/c/c8/Widget_icon.png' alt='1'>"];            

    if (i < str.length) {

      switch (str[i]) {

        case input[0]:


            if ($("#1").length){
            $("div").append(imgs[0]);
          i++;
          break;    

            }else if ($("#2").length){

                $("div").append(imgs[1]);
          i++;
          break;
            }

    }

  else {
    clearInterval(interval);
    $("input").val("");
  }

}
}

Now, I've managed to make the if work, it shows the image, but if I press the second button, the else-if never works. What am I doing wrong?

Well I can't for the life of me figure out what you're trying to do with this code, but here is a working version of it...

 $(document).ready(function() { var str; $("#1, #2").click(function () { test(this); }); }); var input = ['a','b','c']; function test(caller) { var interval = setInterval(match, 1); var i = 0; $("div").html(""); str = $("input").val().toLowerCase(); function match() { var imgs = ["<img src='https://1.bp.blogspot.com/-v2N2hPY33pc/V488gHu5aWI/AAAAAAAAHFM/loGVDK5OlGcft5UUz8-AHZjAd3E7OlZjACLcB/s1600/colorful-background-with-waves.jpg' alt='0'>","<img src='https://upload.wikimedia.org/wikipedia/commons/c/c8/Widget_icon.png' alt='1'>","<img src='https://upload.wikimedia.org/wikipedia/commons/thumb/e/ec/Mona_Lisa%2C_by_Leonardo_da_Vinci%2C_from_C2RMF_retouched.jpg/100px-Mona_Lisa%2C_by_Leonardo_da_Vinci%2C_from_C2RMF_retouched.jpg' alt='2'/>","<img src='https://upload.wikimedia.org/wikipedia/commons/thumb/1/11/Corythucha_ciliata.jpg/120px-Corythucha_ciliata.jpg' alt='3'/>"]; if (i < str.length) { switch (str[i]) { case input[0]: if (caller.id == "1") { $("div").append(imgs[0]); i++; break; } else if (caller.id == "2") { $("div").append(imgs[1]); i++; break; } case input[1]: if (caller.id == "1") { $("div").append(imgs[2]); i++; break; } else if (caller.id == "2") { $("div").append(imgs[3]); i++; break; } } } else { clearInterval(interval); $("input").val(""); } } } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <input id="input"/> <button id="1">1</button> <button id="2">2</button> <div></div> 

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM