单击时显示微调器

sli*_*rek 3 javascript bootstrap-4

我构建了一个微调器并使用 CSS 对其进行了动画处理,现在我尝试隐藏微调器并在单击按钮时显示它。到目前为止,我已经编写了这段代码,当我单击提交时它没有显示<button>

我用 display:none 隐藏了微调器,并尝试使用 JavaScript 将 更改为<div>display:block但它不起作用。

CSS:

* {
margin: 0;
padding: 0;
}

.loader {
   display: none;
   top: 50%;
   left: 50%;
   position: absolute;
   transform: translate(-50%, -50%);
}

.loading {
   border: 2px solid #ccc;
   width: 60px;
   height: 60px;
   border-radius: 50%;
   border-top-color: #1ecd97;
   border-left-color:  #1ecd97;
   animation: spin 1s infinite ease-in;
}

@keyframes spin {
   0% {
       transform: rotate(0deg);
   }
   100% {
       transform: rotate(360deg);
   }
}
Run Code Online (Sandbox Code Playgroud)

JavaScript:

 function spinner() {
 document.getElementsByClassName("loader").style.display = "block";
 }
Run Code Online (Sandbox Code Playgroud)

HTML:

<button type="submit" class="sbtn btn btn-secondary btn-c" 
onclick="spinner()" >Log in</button>
Run Code Online (Sandbox Code Playgroud)

我是Javascript新手,所以我想我可以在这里得到一些指导。

Dio*_*res 8

如果您想向微调器添加样式,则必须获取该函数返回的第一个元素getElementsByClassName

getElementsByClassName返回一个列表,其中包含具有该特定类的元素。

getElementById返回一个具有给定 Id 的元素。

我建议在你的情况下,给加载程序一个 ID 并执行getElementById. 但如果您想使用,getElementsByClassName可以执行以下操作:

document.getElementsByClassName("loader")[0].style.display = "block";
Run Code Online (Sandbox Code Playgroud)

这是一个正在工作的尖晶石:

document.getElementsByClassName("loader")[0].style.display = "block";
Run Code Online (Sandbox Code Playgroud)
* {
  margin: 0;
  padding: 0;
}

.loader {
  display: none;
  top: 50%;
  left: 50%;
  position: absolute;
  transform: translate(-50%, -50%);
}

.loading {
  border: 2px solid #ccc;
  width: 60px;
  height: 60px;
  border-radius: 50%;
  border-top-color: #1ecd97;
  border-left-color: #1ecd97;
  animation: spin 1s infinite ease-in;
}

@keyframes spin {
  0% {
    transform: rotate(0deg);
  }

  100% {
    transform: rotate(360deg);
  }
}
Run Code Online (Sandbox Code Playgroud)