Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 苗条:苗条如何在if块之间运行?_Javascript_Node.js_Svelte - Fatal编程技术网

Javascript 苗条:苗条如何在if块之间运行?

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

我试图在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 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吗