Javascript 苗条:苗条如何在if块之间运行?
我试图在if-else块之间放置一个函数。 下面是我想象的情况:Javascript 苗条:苗条如何在if块之间运行?,javascript,node.js,svelte,Javascript,Node.js,Svelte,我试图在if-else块之间放置一个函数。 下面是我想象的情况: <script> let condition=false function_here(event){ if(event){ condition = true; }else if(!event){ condition = false; }else{ condition = !condition; } </script> {#each post as
<script>
let condition=false
function_here(event){
if(event){
condition = true;
}else if(!event){
condition = false;
}else{
condition = !condition;
}
</script>
{#each post as posts}
{#if posts.object1==="match" }
<p>HTML HERE</p>
{function_here(true)}
{/if}
{/each}
{#if condition}
<button>type1</button>
{:else}
<button>type2</button>
{/if}
让条件=假
此处的函数_(事件){
如果(事件){
条件=真;
}如果(!事件){
条件=假;
}否则{
条件=!条件;
}
{#每个职位都是职位}
{#if posts.object1==“match”}
这里是HTML
{function_here(true)}
{/if}
{/每个}
{#如果条件}
类型1
{:else}
类型2
{/if}
如果仅在循环post结果期间,如果发现posts.object1匹配,则需要更改变量“condition”的状态
但是,此示例返回结果“未定义”
如何将函数放在svelte中的if块之间?您正试图以JSX希望的方式来实现这一点。为什么不将该逻辑抽象为
中的普通JS
<script>
let condition=false
function_here(event){
if(event){
condition = true;
}else if(!event){
condition = false;
}else{
condition = !condition;
}
}
for (post in posts) {
if(post.object1 === 'match') {
function_here(true)
}
}
</script>
{#each post as posts}
{#if post.object1==="match" }
<p>HTML HERE</p>
{/if}
{/each}
{#if condition}
<button>type1</button>
{:else}
<button>type2</button>
{/if}
让条件=假
此处的函数_(事件){
如果(事件){
条件=真;
}如果(!事件){
条件=假;
}否则{
条件=!条件;
}
}
用于(以职位为单位的职位){
如果(post.object1=='match'){
此处的函数_(true)
}
}
{#每个职位都是职位}
{#如果post.object1==“匹配”}
这里是HTML
{/if}
{/每个}
{#如果条件}
类型1
{:else}
类型2
{/if}
让我知道这是否有助于您您正试图以JSX希望的方式来处理此问题。为什么不将该逻辑抽象为
中的普通JS
<script>
let condition=false
function_here(event){
if(event){
condition = true;
}else if(!event){
condition = false;
}else{
condition = !condition;
}
}
for (post in posts) {
if(post.object1 === 'match') {
function_here(true)
}
}
</script>
{#each post as posts}
{#if post.object1==="match" }
<p>HTML HERE</p>
{/if}
{/each}
{#if condition}
<button>type1</button>
{:else}
<button>type2</button>
{/if}
让条件=假
此处的函数_(事件){
如果(事件){
条件=真;
}如果(!事件){
条件=假;
}否则{
条件=!条件;
}
}
用于(以职位为单位的职位){
如果(post.object1=='match'){
此处的函数_(true)
}
}
{#每个职位都是职位}
{#如果post.object1==“匹配”}
这里是HTML
{/if}
{/每个}
{#如果条件}
类型1
{:else}
类型2
{/if}
让我知道这是否有助于您调用模板内的函数,就像在Svelte中被认为是不好的做法一样,该代码属于组件的脚本部分。解决此问题的最佳方法是使用被动变量,这样,如果
发布更改,它也会更改:
$:condition=posts..//基于posts的内容
实际情况如何取决于您,您在回答中给出的代码似乎与实际代码相比非常简单。在Svelte中这样调用模板内的函数被认为是不好的做法,该代码属于组件的脚本部分。解决此问题的最佳方法是使用被动变量,以便如果发布
更改,它也会更改:
$:condition=posts..//基于posts的内容
实际情况如何取决于您,您在答案中给出的代码似乎与实际代码相比非常简单。我理解其他答案建议使用最佳实践。但是,要回答在HTML部分中以Svelte运行或调用JS代码的一般问题,可按以下步骤进行ows
<script>
...
</script>
<!-- HTML part -->
{functionCall() || ""} <-- This avoids 'undefined' showing up in your markup!
...
{functionCall()| |“”}我知道其他答案建议使用最佳实践。但是,要回答在HTML部分中以Svelte运行或调用JS代码的一般问题,可以按如下方法进行
<script>
...
</script>
<!-- HTML part -->
{functionCall() || ""} <-- This avoids 'undefined' showing up in your markup!
...
{functionCall()| |“”}你能提供一个更好的例子吗?你正在向它传递true
,所以它总是这样做condition=true
。我看不出这是为什么。你可能会看到未定义的,因为函数不返回任何东西。也许你真正想要的是用condition=p预先计算值osts.some(post=>post.object1=='match')
这是您应该了解javascript的第一件事。如果函数不返回任何内容,它将返回未定义的
。您的函数不返回任何内容Hi felix。在每次post循环后,我需要将条件恢复为false。我需要在代码的其他部分使用类似于toggle的函数,但在这一部分,我不需要o当post.object1匹配时能够传递true。这就是函数看起来像这样的原因。你能提供一个更好的例子吗?你正在传递true
,所以它总是会执行condition=true
。我看不出它的用途。你可能会看到未定义的,因为函数不返回任何东西可能您真正想要的是使用condition=posts.some(post=>post.object1=='match')预先计算值
这是您应该了解javascript的第一件事。如果函数不返回任何内容,它将返回未定义的
。您的函数不返回任何内容Hi felix。在每次post循环后,我需要将条件恢复为false。我需要在代码的其他部分使用类似于toggle的函数,但在这一部分,我不需要o当post.object1匹配时能够传递true。这就是函数看起来像这样的原因。我认为这不可能工作。函数不能在同一个循环块外运行,因为实际代码中会多次触发条件。对于每个post,我需要将条件转换回false,以便正确使用切换函数(这是“条件”)正常工作。我认为这不可能工作。函数不能在同一个循环块外运行,因为实际代码中会多次触发条件。对于每个帖子,我需要将条件转换回false,以便正确使用切换函数(这是“条件”)为了正常工作。您是否建议先将数据传递到条件中,然后再在模板中执行另一个循环?如果不是,那么我是在模板中运行该行,还是在模板中运行该行?如果是在模板中,我认为这与我尝试在模板中放置函数是一样的。但如果是在脚本中,那么,与使用普通js没有什么不同。请更正如果我错了,请告诉我。你是在建议做循环,通过a吗