【问题标题】:using onMount to add class dynamically to element使用 onMount 将类动态添加到元素
【发布时间】:2020-11-10 07:49:24
【问题描述】:

使用工兵。尝试创建一个输入并将 2 个类“名称边框”分配给该动态创建的输入元素。元素已创建,但未应用类。不知道为什么,希望有人能帮助我。样式部分有两个类“名称”和“边框”,如果我将它们应用于我的 html 中的常规输入,它们会起作用并应用于像这样创建的任何输入:

<input class="name border"/>

但是使用动态创建的输入,样式类不会添加到创建的元素中。我的简单组件具有以下内容:

 <script>
  import { onMount } from 'svelte';
    
  function getinfo(){
  let x = document.querySelectorAll('input')
  for (let i = 0; i < x.length; i++) {
                 let values = x[i].value;
                 console.log("input-value: ", values)
               } 
     
  }
  
       onMount( () => {
       
       var adiv = document.createElement('div');
       var firstinput = document.createElement('input')       
       firstinput.classList.add("name")
       adiv.appendChild(firstinput); 
      
    
       var parent = document.getElementById("parent");
       parent.appendChild(adiv);         
        
       // Apply the style class "name" settings to the input element
       document.querySelector("input").classList.add("name")
    
       var secondinput = document.createElement('input');      
       adiv.appendChild(secondinput);
       }
         
    ) //onMount
                
</script>

<style>
  /* to create a bigger input */
  .name{
  font-size: 16pt;
  height: 50px;
  }
          
  .border {
   border-style : solid;
  }

</style>

<h1> Enter Items </h1>

<form id="mainform" name="formcollect"  on:submit|preventDefault={getinfo}>
      
    <div class="parent" id="parent">         
    </div>        
 
    <button type="submit">SAVE</button>
</form>

我做错了什么?

【问题讨论】:

    标签: javascript css sapper svelte-3 svelte-component


    【解决方案1】:

    Svelte 将删除未使用的样式。在这种情况下,Svelte 不使用样式,并且有效地用于嵌套的纯 js 组件。如果您将它们设为全局 Svelte 将不会删除它们。

    <style>
      /* to create a bigger input */
      :global(.name) {
          font-size: 16pt;
          height: 50px;
      }
          
      :global(.border) {
          border-style : solid;
      } 
    </style>
    

    【讨论】:

    • 非常感谢。总是有帮助的答案。与原始问题无关,但与您的答案相关:将我的 css 放在全局范围内是否仍适用于当前组件,或者该类对其他组件可用? :global 这个名字让我想知道什么时候应该使用 :global?
    • 正如您所怀疑的, :global() 删除了范围。谨慎使用。
    猜你喜欢
    • 2015-01-09
    • 2018-02-10
    • 2021-06-15
    • 2016-12-29
    • 2017-05-06
    • 1970-01-01
    • 2016-02-09
    • 2014-04-13
    • 2017-09-26
    相关资源
    最近更新 更多