Else and else-if blocks let you show different things on the screen depending on conditions. They help your app react to different situations.
Showing a message if a user is logged in, and a different one if not.
Displaying different content based on a selected option in a form.
Showing a loading spinner while data is loading, then showing the data or an error message.
Changing the page content based on user choices or app state.
Syntax
Svelte
{#if condition}
<!-- content iftrue -->
{:elseif anotherCondition}
<!-- content if anotherCondition is true -->
{:else}
<!-- content if none of the above are true -->
{/if}
Use {:else if} to check another condition if the first is false.
Use {:else} to show content when all conditions are false.
Examples
Shows a welcome message if loggedIn is true, otherwise asks to log in.
{#if score >= 90}
<p>Grade: A</p>
{:elseif score >= 80}
<p>Grade: B</p>
{:else}
<p>Grade: C or below</p>
{/if}
Sample Program
This Svelte component shows a loading message first. After 2 seconds, it changes to a success message. If the status was anything else, it would show a failure message.
Svelte
<script>
let status = 'loading';
// Simulate status change after 2 secondssetTimeout(() => {
status = 'success';
}, 2000);
</script>
{#if status === 'loading'}
<p>Loading data...</p>
{:elseif status === 'success'}
<p>Data loaded successfully!</p>
{:else}
<p>Failed to load data.</p>
{/if}
OutputSuccess
Important Notes
Only one block inside {#if} ... {:else if} ... {:else} runs at a time.
You can have multiple {:else if} blocks to check many conditions.
Make sure to close the block with {/if}.
Summary
Use {#if} to start a condition block.
Use {:else if} to check another condition if the first is false.
Use {:else} to show content when all conditions fail.
Practice
(1/5)
1. In Svelte, which block is used to check a second condition if the first {#if} condition is false?
easy
A. {:else}
B. {#each}
C. {:else if}
D. {#await}
Solution
Step 1: Understand the purpose of {#if} and {:else if}
The {#if} block checks the first condition. If it is false, {:else if} allows checking another condition.
Step 2: Identify the correct block for a second condition
{:else if} is specifically designed to check additional conditions after the first fails.
Final Answer:
{:else if} -> Option C
Quick Check:
Second condition check = {:else if} [OK]
Hint: Use {:else if} to test another condition after {#if} fails [OK]
Common Mistakes:
Using {:else} to check a condition instead of fallback
Confusing {#each} with conditional blocks
Trying to use {#await} for conditions
2. Which of the following is the correct syntax for an else-if block in Svelte?
easy
A. {:elseif condition}
B. {:else if condition}
C. {:else-if condition}
D. {:else if (condition)}
Solution
Step 1: Recall Svelte syntax for else-if
Svelte uses {:else if} followed by the condition without parentheses.
Step 2: Compare options to correct syntax
{:else if condition} matches the correct syntax exactly: {:else if condition}
Final Answer:
{:else if condition} -> Option B
Quick Check:
Correct else-if syntax = {:else if condition} [OK]
Hint: Remember: space between else and if, no parentheses [OK]
Common Mistakes:
Writing {:elseif} as one word
Adding parentheses around condition
Using hyphen in else-if
3. What will be rendered by this Svelte code?
{`\n{#if score >= 90}\n
Excellent
\n{:else if score >= 60}\n
Good
\n{:else}\n
Try again
\n{/if}`}
medium
A.
Good
B.
Try again
C.
Excellent
D. No output
Solution
Step 1: Evaluate the first condition
score is 75, which is not >= 90, so the first {#if} block is false.
Step 2: Evaluate the else-if condition
score is 75, which is >= 60, so {:else if} block is true and renders <p>Good</p>.
Final Answer:
<p>Good</p> -> Option A
Quick Check:
score 75 triggers else-if block = Good [OK]
Hint: Check conditions top-down; first true block renders [OK]
Common Mistakes:
Assuming all blocks render instead of only one
Misreading the score value
Confusing else-if with else
4. Identify the error in this Svelte code snippet:
{`{#if isActive}\n
Active
\n{:else if}\n
Inactive
\n{/if}`}
medium
A. Missing condition after {:else if}
B. Incorrect closing tag {/if}
C. Cannot use {:else if} after {#if}
D. Missing colon before else
Solution
Step 1: Check {:else if} syntax
The {:else if} block requires a condition to follow it, but none is provided here.
Step 2: Confirm other parts are correct
The {#if} and {/if} tags are correctly placed, and {:else if} is allowed after {#if}.
Final Answer:
Missing condition after {:else if} -> Option A
Quick Check:
{:else if} needs a condition [OK]
Hint: Always add a condition after {:else if} [OK]
Common Mistakes:
Leaving {:else if} without condition
Confusing {:else} with {:else if}
Misplacing {/if} tag
5. Given this Svelte code:
{`\n{#if status === 'loading'}\n
Loading...
\n{:else if status === 'success'}\n
Data loaded
\n{:else if status === 'error'}\n
Error occurred
\n{:else}\n
Idle
\n{/if}`}
What will be displayed if status is an empty string?
hard
A.
Loading...
B.
Data loaded
C.
Error occurred
D.
Idle
Solution
Step 1: Check each condition against empty string
status is '', so none of the conditions 'loading', 'success', or 'error' match.
Step 2: Use {:else} block as fallback
Since no conditions match, the {:else} block runs, rendering <p>Idle</p>.
Final Answer:
<p>Idle</p> -> Option D
Quick Check:
Empty string triggers else block = Idle [OK]
Hint: If no conditions match, {:else} block runs [OK]
Common Mistakes:
Assuming empty string matches a condition
Forgetting {:else} fallback
Mixing up else-if and else blocks
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.