Why does my if / else if statement work but my switch case doesn't? [closed]Javascript: How to use object literals instead of if and switch statements for expression-based conditions?Why don't self-closing script tags work?How does JavaScript .prototype work?Why does Google prepend while(1); to their JSON responses?How does the “this” keyword work?Why does ++[[]][+[]]+[+[]] return the string “10”?How does data binding work in AngularJS?How does Access-Control-Allow-Origin header work?Why does parseInt(1/0, 19) return 18?Switch statement multiple cases in JavaScriptWhy does my javascript else statement stop working

Trouble understanding the speech of overseas colleagues

System.debug(JSON.Serialize(o)) Not longer shows full string

Sequence of Tenses: Translating the subjunctive

How to draw lines on a tikz-cd diagram

Increase performance creating Mandelbrot set in python

How to run a prison with the smallest amount of guards?

Pole-zeros of a real-valued causal FIR system

Type int? vs type int

Tiptoe or tiphoof? Adjusting words to better fit fantasy races

Do all network devices need to make routing decisions, regardless of communication across networks or within a network?

Do the temporary hit points from Reckless Abandon stack if I make multiple attacks on my turn?

Anatomically Correct Strange Women In Ponds Distributing Swords

India just shot down a satellite from the ground. At what altitude range is the resulting debris field?

For a non-Jew, is there a punishment for not observing the 7 Noahide Laws?

Are student evaluations of teaching assistants read by others in the faculty?

Is HostGator storing my password in plaintext?

Applicability of Single Responsibility Principle

Short story about space worker geeks who zone out by 'listening' to radiation from stars

What is the intuitive meaning of having a linear relationship between the logs of two variables?

Hostile work environment after whistle-blowing on coworker and our boss. What do I do?

Is there a problem with hiding "forgot password" until it's needed?

How long to clear the 'suck zone' of a turbofan after start is initiated?

Is expanding the research of a group into machine learning as a PhD student risky?

How do scammers retract money, while you can’t?



Why does my if / else if statement work but my switch case doesn't? [closed]


Javascript: How to use object literals instead of if and switch statements for expression-based conditions?Why don't self-closing script tags work?How does JavaScript .prototype work?Why does Google prepend while(1); to their JSON responses?How does the “this” keyword work?Why does ++[[]][+[]]+[+[]] return the string “10”?How does data binding work in AngularJS?How does Access-Control-Allow-Origin header work?Why does parseInt(1/0, 19) return 18?Switch statement multiple cases in JavaScriptWhy does my javascript else statement stop working













-2















So I have run into this problem which has been driving me nuts for the past couple of hours.



I have a conditional statement:



if (count == '0') 
var variable = '0%'
document.querySelector('.content').innerHTML = variable

else if (count == '1')
var variable = '5%'
document.querySelector('.content').innerHTML = variable

else if (count == '2')
var variable = '10%'
document.querySelector('.content').innerHTML = variable



and it's working fine. The only problem is, I have 20 values so instead of writing the same if/else if for 20 values I decided to make a switch case:



switch (count) 
case '0':
var variable = '0 %'
document.querySelector('.content').innerHTML = variable
break;
case '1':
var variable = '5 %'
document.querySelector('.content').innerHTML = variable
break;



For some reason its not working, I really don't understand what's wrong.



TLDR: My if/else if is working fine but my switch case isn't and I can't figure out why not.










share|improve this question















closed as off-topic by Barmar, Get Off My Lawn, Code Maniac, ponury-kostek, Jared Smith Mar 21 at 16:10


This question appears to be off-topic. The users who voted to close gave this specific reason:


  • "This question was caused by a problem that can no longer be reproduced or a simple typographical error. While similar questions may be on-topic here, this one was resolved in a manner unlikely to help future readers. This can often be avoided by identifying and closely inspecting the shortest program necessary to reproduce the problem before posting." – Barmar, Get Off My Lawn, Code Maniac, ponury-kostek, Jared Smith
If this question can be reworded to fit the rules in the help center, please edit the question.











  • 7





    You are using the wrong type of quotes

    – Get Off My Lawn
    Mar 21 at 16:02







  • 6





    that quote character is strange. I don't think JS allows it.

    – Sergiu Paraschiv
    Mar 21 at 16:02






  • 5





    Why not just use ...innerHTML = `$count * 5%`?

    – p.s.w.g
    Mar 21 at 16:02







  • 9





    Switch uses === so your count == '2' is not same as case 2

    – Code Maniac
    Mar 21 at 16:04






  • 3





    Are you passing a string or an int into the switch statement. 1 !== '1'

    – Ardesco
    Mar 21 at 16:05















-2















So I have run into this problem which has been driving me nuts for the past couple of hours.



I have a conditional statement:



if (count == '0') 
var variable = '0%'
document.querySelector('.content').innerHTML = variable

else if (count == '1')
var variable = '5%'
document.querySelector('.content').innerHTML = variable

else if (count == '2')
var variable = '10%'
document.querySelector('.content').innerHTML = variable



and it's working fine. The only problem is, I have 20 values so instead of writing the same if/else if for 20 values I decided to make a switch case:



switch (count) 
case '0':
var variable = '0 %'
document.querySelector('.content').innerHTML = variable
break;
case '1':
var variable = '5 %'
document.querySelector('.content').innerHTML = variable
break;



For some reason its not working, I really don't understand what's wrong.



TLDR: My if/else if is working fine but my switch case isn't and I can't figure out why not.










share|improve this question















closed as off-topic by Barmar, Get Off My Lawn, Code Maniac, ponury-kostek, Jared Smith Mar 21 at 16:10


This question appears to be off-topic. The users who voted to close gave this specific reason:


  • "This question was caused by a problem that can no longer be reproduced or a simple typographical error. While similar questions may be on-topic here, this one was resolved in a manner unlikely to help future readers. This can often be avoided by identifying and closely inspecting the shortest program necessary to reproduce the problem before posting." – Barmar, Get Off My Lawn, Code Maniac, ponury-kostek, Jared Smith
If this question can be reworded to fit the rules in the help center, please edit the question.











  • 7





    You are using the wrong type of quotes

    – Get Off My Lawn
    Mar 21 at 16:02







  • 6





    that quote character is strange. I don't think JS allows it.

    – Sergiu Paraschiv
    Mar 21 at 16:02






  • 5





    Why not just use ...innerHTML = `$count * 5%`?

    – p.s.w.g
    Mar 21 at 16:02







  • 9





    Switch uses === so your count == '2' is not same as case 2

    – Code Maniac
    Mar 21 at 16:04






  • 3





    Are you passing a string or an int into the switch statement. 1 !== '1'

    – Ardesco
    Mar 21 at 16:05













-2












-2








-2








So I have run into this problem which has been driving me nuts for the past couple of hours.



I have a conditional statement:



if (count == '0') 
var variable = '0%'
document.querySelector('.content').innerHTML = variable

else if (count == '1')
var variable = '5%'
document.querySelector('.content').innerHTML = variable

else if (count == '2')
var variable = '10%'
document.querySelector('.content').innerHTML = variable



and it's working fine. The only problem is, I have 20 values so instead of writing the same if/else if for 20 values I decided to make a switch case:



switch (count) 
case '0':
var variable = '0 %'
document.querySelector('.content').innerHTML = variable
break;
case '1':
var variable = '5 %'
document.querySelector('.content').innerHTML = variable
break;



For some reason its not working, I really don't understand what's wrong.



TLDR: My if/else if is working fine but my switch case isn't and I can't figure out why not.










share|improve this question
















So I have run into this problem which has been driving me nuts for the past couple of hours.



I have a conditional statement:



if (count == '0') 
var variable = '0%'
document.querySelector('.content').innerHTML = variable

else if (count == '1')
var variable = '5%'
document.querySelector('.content').innerHTML = variable

else if (count == '2')
var variable = '10%'
document.querySelector('.content').innerHTML = variable



and it's working fine. The only problem is, I have 20 values so instead of writing the same if/else if for 20 values I decided to make a switch case:



switch (count) 
case '0':
var variable = '0 %'
document.querySelector('.content').innerHTML = variable
break;
case '1':
var variable = '5 %'
document.querySelector('.content').innerHTML = variable
break;



For some reason its not working, I really don't understand what's wrong.



TLDR: My if/else if is working fine but my switch case isn't and I can't figure out why not.







javascript






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Mar 21 at 16:08









OliverRadini

3,113728




3,113728










asked Mar 21 at 16:00









jortonjorton

195




195




closed as off-topic by Barmar, Get Off My Lawn, Code Maniac, ponury-kostek, Jared Smith Mar 21 at 16:10


This question appears to be off-topic. The users who voted to close gave this specific reason:


  • "This question was caused by a problem that can no longer be reproduced or a simple typographical error. While similar questions may be on-topic here, this one was resolved in a manner unlikely to help future readers. This can often be avoided by identifying and closely inspecting the shortest program necessary to reproduce the problem before posting." – Barmar, Get Off My Lawn, Code Maniac, ponury-kostek, Jared Smith
If this question can be reworded to fit the rules in the help center, please edit the question.







closed as off-topic by Barmar, Get Off My Lawn, Code Maniac, ponury-kostek, Jared Smith Mar 21 at 16:10


This question appears to be off-topic. The users who voted to close gave this specific reason:


  • "This question was caused by a problem that can no longer be reproduced or a simple typographical error. While similar questions may be on-topic here, this one was resolved in a manner unlikely to help future readers. This can often be avoided by identifying and closely inspecting the shortest program necessary to reproduce the problem before posting." – Barmar, Get Off My Lawn, Code Maniac, ponury-kostek, Jared Smith
If this question can be reworded to fit the rules in the help center, please edit the question.







  • 7





    You are using the wrong type of quotes

    – Get Off My Lawn
    Mar 21 at 16:02







  • 6





    that quote character is strange. I don't think JS allows it.

    – Sergiu Paraschiv
    Mar 21 at 16:02






  • 5





    Why not just use ...innerHTML = `$count * 5%`?

    – p.s.w.g
    Mar 21 at 16:02







  • 9





    Switch uses === so your count == '2' is not same as case 2

    – Code Maniac
    Mar 21 at 16:04






  • 3





    Are you passing a string or an int into the switch statement. 1 !== '1'

    – Ardesco
    Mar 21 at 16:05












  • 7





    You are using the wrong type of quotes

    – Get Off My Lawn
    Mar 21 at 16:02







  • 6





    that quote character is strange. I don't think JS allows it.

    – Sergiu Paraschiv
    Mar 21 at 16:02






  • 5





    Why not just use ...innerHTML = `$count * 5%`?

    – p.s.w.g
    Mar 21 at 16:02







  • 9





    Switch uses === so your count == '2' is not same as case 2

    – Code Maniac
    Mar 21 at 16:04






  • 3





    Are you passing a string or an int into the switch statement. 1 !== '1'

    – Ardesco
    Mar 21 at 16:05







7




7





You are using the wrong type of quotes

– Get Off My Lawn
Mar 21 at 16:02






You are using the wrong type of quotes

– Get Off My Lawn
Mar 21 at 16:02





6




6





that quote character is strange. I don't think JS allows it.

– Sergiu Paraschiv
Mar 21 at 16:02





that quote character is strange. I don't think JS allows it.

– Sergiu Paraschiv
Mar 21 at 16:02




5




5





Why not just use ...innerHTML = `$count * 5%`?

– p.s.w.g
Mar 21 at 16:02






Why not just use ...innerHTML = `$count * 5%`?

– p.s.w.g
Mar 21 at 16:02





9




9





Switch uses === so your count == '2' is not same as case 2

– Code Maniac
Mar 21 at 16:04





Switch uses === so your count == '2' is not same as case 2

– Code Maniac
Mar 21 at 16:04




3




3





Are you passing a string or an int into the switch statement. 1 !== '1'

– Ardesco
Mar 21 at 16:05





Are you passing a string or an int into the switch statement. 1 !== '1'

– Ardesco
Mar 21 at 16:05












2 Answers
2






active

oldest

votes


















7














It might be type-conversion issue.



With "if" approach you're using type-converting comparison operator (==), so 0 == '0' yields true.
Switch, on the other hand, uses strict comparison operator.



https://www.w3schools.com/js/js_switch.asp




Strict Comparison



Switch cases use strict comparison (===).



The values must be of the same type to match.



A strict comparison can only be true if the operands are of the same type.







share|improve this answer








New contributor




poniraq is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.




















  • I see that let count = 0 doesn't work in a switch but let count ='0' does work. Never thought of that good find!

    – Get Off My Lawn
    Mar 21 at 16:14



















-2














Looks like you have weird quote characters in your switch:



enter image description here



The switch version looks like it is using "smart quotes" which are slanted depending on whether they are opening or closing. Many rich text editors convert regular quotes to smart quotes automatically, so if you wrote the code in a rich text originally, or copied and pasted it via Slack or something, that might explain where those characters came from.



Easy fix, though, just change them to regular quote characters as you have in your if statements.






share|improve this answer


















  • 1





    Whenever I've seen this issue, it's usually because the code has been copy-pasted into a word processor (e.g. Word). IDE's will usually complain pretty loudly about this, or even automagically convert them back to 'simple' single-quotes. In other words, this is most likely due to the way OP was preparing the question for StackOverflow, rather than being an actual problem in the code.

    – p.s.w.g
    Mar 21 at 16:12











  • Oh, yeah, OK, that just looked like the most obvious immediate problem, the type coercion thing makes sense after that.

    – Benjamin Robinson
    Mar 22 at 17:18

















2 Answers
2






active

oldest

votes








2 Answers
2






active

oldest

votes









active

oldest

votes






active

oldest

votes









7














It might be type-conversion issue.



With "if" approach you're using type-converting comparison operator (==), so 0 == '0' yields true.
Switch, on the other hand, uses strict comparison operator.



https://www.w3schools.com/js/js_switch.asp




Strict Comparison



Switch cases use strict comparison (===).



The values must be of the same type to match.



A strict comparison can only be true if the operands are of the same type.







share|improve this answer








New contributor




poniraq is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.




















  • I see that let count = 0 doesn't work in a switch but let count ='0' does work. Never thought of that good find!

    – Get Off My Lawn
    Mar 21 at 16:14
















7














It might be type-conversion issue.



With "if" approach you're using type-converting comparison operator (==), so 0 == '0' yields true.
Switch, on the other hand, uses strict comparison operator.



https://www.w3schools.com/js/js_switch.asp




Strict Comparison



Switch cases use strict comparison (===).



The values must be of the same type to match.



A strict comparison can only be true if the operands are of the same type.







share|improve this answer








New contributor




poniraq is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.




















  • I see that let count = 0 doesn't work in a switch but let count ='0' does work. Never thought of that good find!

    – Get Off My Lawn
    Mar 21 at 16:14














7












7








7







It might be type-conversion issue.



With "if" approach you're using type-converting comparison operator (==), so 0 == '0' yields true.
Switch, on the other hand, uses strict comparison operator.



https://www.w3schools.com/js/js_switch.asp




Strict Comparison



Switch cases use strict comparison (===).



The values must be of the same type to match.



A strict comparison can only be true if the operands are of the same type.







share|improve this answer








New contributor




poniraq is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.










It might be type-conversion issue.



With "if" approach you're using type-converting comparison operator (==), so 0 == '0' yields true.
Switch, on the other hand, uses strict comparison operator.



https://www.w3schools.com/js/js_switch.asp




Strict Comparison



Switch cases use strict comparison (===).



The values must be of the same type to match.



A strict comparison can only be true if the operands are of the same type.








share|improve this answer








New contributor




poniraq is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.









share|improve this answer



share|improve this answer






New contributor




poniraq is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.









answered Mar 21 at 16:08









poniraqponiraq

861




861




New contributor




poniraq is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.





New contributor





poniraq is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.






poniraq is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.












  • I see that let count = 0 doesn't work in a switch but let count ='0' does work. Never thought of that good find!

    – Get Off My Lawn
    Mar 21 at 16:14


















  • I see that let count = 0 doesn't work in a switch but let count ='0' does work. Never thought of that good find!

    – Get Off My Lawn
    Mar 21 at 16:14

















I see that let count = 0 doesn't work in a switch but let count ='0' does work. Never thought of that good find!

– Get Off My Lawn
Mar 21 at 16:14






I see that let count = 0 doesn't work in a switch but let count ='0' does work. Never thought of that good find!

– Get Off My Lawn
Mar 21 at 16:14














-2














Looks like you have weird quote characters in your switch:



enter image description here



The switch version looks like it is using "smart quotes" which are slanted depending on whether they are opening or closing. Many rich text editors convert regular quotes to smart quotes automatically, so if you wrote the code in a rich text originally, or copied and pasted it via Slack or something, that might explain where those characters came from.



Easy fix, though, just change them to regular quote characters as you have in your if statements.






share|improve this answer


















  • 1





    Whenever I've seen this issue, it's usually because the code has been copy-pasted into a word processor (e.g. Word). IDE's will usually complain pretty loudly about this, or even automagically convert them back to 'simple' single-quotes. In other words, this is most likely due to the way OP was preparing the question for StackOverflow, rather than being an actual problem in the code.

    – p.s.w.g
    Mar 21 at 16:12











  • Oh, yeah, OK, that just looked like the most obvious immediate problem, the type coercion thing makes sense after that.

    – Benjamin Robinson
    Mar 22 at 17:18















-2














Looks like you have weird quote characters in your switch:



enter image description here



The switch version looks like it is using "smart quotes" which are slanted depending on whether they are opening or closing. Many rich text editors convert regular quotes to smart quotes automatically, so if you wrote the code in a rich text originally, or copied and pasted it via Slack or something, that might explain where those characters came from.



Easy fix, though, just change them to regular quote characters as you have in your if statements.






share|improve this answer


















  • 1





    Whenever I've seen this issue, it's usually because the code has been copy-pasted into a word processor (e.g. Word). IDE's will usually complain pretty loudly about this, or even automagically convert them back to 'simple' single-quotes. In other words, this is most likely due to the way OP was preparing the question for StackOverflow, rather than being an actual problem in the code.

    – p.s.w.g
    Mar 21 at 16:12











  • Oh, yeah, OK, that just looked like the most obvious immediate problem, the type coercion thing makes sense after that.

    – Benjamin Robinson
    Mar 22 at 17:18













-2












-2








-2







Looks like you have weird quote characters in your switch:



enter image description here



The switch version looks like it is using "smart quotes" which are slanted depending on whether they are opening or closing. Many rich text editors convert regular quotes to smart quotes automatically, so if you wrote the code in a rich text originally, or copied and pasted it via Slack or something, that might explain where those characters came from.



Easy fix, though, just change them to regular quote characters as you have in your if statements.






share|improve this answer













Looks like you have weird quote characters in your switch:



enter image description here



The switch version looks like it is using "smart quotes" which are slanted depending on whether they are opening or closing. Many rich text editors convert regular quotes to smart quotes automatically, so if you wrote the code in a rich text originally, or copied and pasted it via Slack or something, that might explain where those characters came from.



Easy fix, though, just change them to regular quote characters as you have in your if statements.







share|improve this answer












share|improve this answer



share|improve this answer










answered Mar 21 at 16:09









Benjamin RobinsonBenjamin Robinson

36027




36027







  • 1





    Whenever I've seen this issue, it's usually because the code has been copy-pasted into a word processor (e.g. Word). IDE's will usually complain pretty loudly about this, or even automagically convert them back to 'simple' single-quotes. In other words, this is most likely due to the way OP was preparing the question for StackOverflow, rather than being an actual problem in the code.

    – p.s.w.g
    Mar 21 at 16:12











  • Oh, yeah, OK, that just looked like the most obvious immediate problem, the type coercion thing makes sense after that.

    – Benjamin Robinson
    Mar 22 at 17:18












  • 1





    Whenever I've seen this issue, it's usually because the code has been copy-pasted into a word processor (e.g. Word). IDE's will usually complain pretty loudly about this, or even automagically convert them back to 'simple' single-quotes. In other words, this is most likely due to the way OP was preparing the question for StackOverflow, rather than being an actual problem in the code.

    – p.s.w.g
    Mar 21 at 16:12











  • Oh, yeah, OK, that just looked like the most obvious immediate problem, the type coercion thing makes sense after that.

    – Benjamin Robinson
    Mar 22 at 17:18







1




1





Whenever I've seen this issue, it's usually because the code has been copy-pasted into a word processor (e.g. Word). IDE's will usually complain pretty loudly about this, or even automagically convert them back to 'simple' single-quotes. In other words, this is most likely due to the way OP was preparing the question for StackOverflow, rather than being an actual problem in the code.

– p.s.w.g
Mar 21 at 16:12





Whenever I've seen this issue, it's usually because the code has been copy-pasted into a word processor (e.g. Word). IDE's will usually complain pretty loudly about this, or even automagically convert them back to 'simple' single-quotes. In other words, this is most likely due to the way OP was preparing the question for StackOverflow, rather than being an actual problem in the code.

– p.s.w.g
Mar 21 at 16:12













Oh, yeah, OK, that just looked like the most obvious immediate problem, the type coercion thing makes sense after that.

– Benjamin Robinson
Mar 22 at 17:18





Oh, yeah, OK, that just looked like the most obvious immediate problem, the type coercion thing makes sense after that.

– Benjamin Robinson
Mar 22 at 17:18



Popular posts from this blog

Kamusi Yaliyomo Aina za kamusi | Muundo wa kamusi | Faida za kamusi | Dhima ya picha katika kamusi | Marejeo | Tazama pia | Viungo vya nje | UrambazajiKuhusu kamusiGo-SwahiliWiki-KamusiKamusi ya Kiswahili na Kiingerezakuihariri na kuongeza habari

Swift 4 - func physicsWorld not invoked on collision? The Next CEO of Stack OverflowHow to call Objective-C code from Swift#ifdef replacement in the Swift language@selector() in Swift?#pragma mark in Swift?Swift for loop: for index, element in array?dispatch_after - GCD in Swift?Swift Beta performance: sorting arraysSplit a String into an array in Swift?The use of Swift 3 @objc inference in Swift 4 mode is deprecated?How to optimize UITableViewCell, because my UITableView lags

Access current req object everywhere in Node.js ExpressWhy are global variables considered bad practice? (node.js)Using req & res across functionsHow do I get the path to the current script with Node.js?What is Node.js' Connect, Express and “middleware”?Node.js w/ express error handling in callbackHow to access the GET parameters after “?” in Express?Modify Node.js req object parametersAccess “app” variable inside of ExpressJS/ConnectJS middleware?Node.js Express app - request objectAngular Http Module considered middleware?Session variables in ExpressJSAdd properties to the req object in expressjs with Typescript