Jquery 在第二次单击后工作,然后继续正常工作

标签 jquery html

这是运行正常但在第二次单击时开始运行的脚本。它应该从第一次点击开始就可以工作。

function change_text() {
  var button = document.getElementById('toggle_button');
  if (button.innerHTML === "Edit") {
    button.innerHTML = "Save";
  } else {
    button.innerHTML = "Edit";
  }
}

这是 html:

<h3 class="panel-title">
  <a class="accordion-toggle" data-toggle="collapse" data-parent="#tsAccordion" href="#tsCollapseOne;#tsCollapseTwo">
    <span class="pull-right" id="toggle_button" onclick="change_text()" style="text-decoration: underline; color: orange; text-align: center; font-size: 16px; margin-top: -54px"> Edit </span>
  </a>
</h3>

请帮忙。

function change_text() {
  var button = document.getElementById('toggle_button');
  if (button.innerHTML === "Edit") {
    button.innerHTML = "Save";
  } else {
    button.innerHTML = "Edit";
  }
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<h3 class="panel-title">
  <a class="accordion-toggle" data-toggle="collapse" data-parent="#tsAccordion" href="#tsCollapseOne;#tsCollapseTwo">
    <span class="pull-right" id="toggle_button" onclick="change_text()" style="text-decoration: underline; color: orange; text-align: center; font-size: 16px; margin-top: -54px"> Edit </span>
  </a>
</h3>

最佳答案

您需要在 button.innerHTML 上使用 trim(),因为 button.innerHTML 为您提供值 Edit 带有尾随和前导空格。因此,条件 button.innerHTML === "Edit"false,因为它的尾随 whilespace 值带有 Edit。因此,它执行 else block ,该 block 将 button.innerHTML 替换为值 Edit,且不带尾随和前导空格。这就是为什么它在第二次单击时起作用,因为在第二次单击时, button.innerHTML 值是 Edit ,没有空格,并且 if 条件是 正确

function change_text() {
  var button = document.getElementById('toggle_button');
  if (button.innerHTML.trim() === "Edit") {
    button.innerHTML = "Save";
  }
  else {
    button.innerHTML = "Edit";
  }
}
<h3 class="panel-title">
  <a class="accordion-toggle" data-toggle="collapse" data-parent="#tsAccordion" href="#tsCollapseOne;#tsCollapseTwo">

   <span class="pull-right" id="toggle_button" onclick="change_text()" style="text-decoration: underline; color: orange; text-align: center; font-size: 16px; margin-top: -54px"> Edit </span> 
 </a> 
</h3>

关于Jquery 在第二次单击后工作,然后继续正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50186304/

相关文章:

html - 页面加载时需要关闭侧边栏

javascript - 有没有办法从 DOM 中获取选项的不同值?

javascript - 为 datetime-local 设置默认时间值

javascript - 从不同的页面编辑 div 内容

javascript - 如何在 React 中使用 prop 双向绑定(bind) select 元素

php onclick 使用

javascript - 是否有帮助将 Prototype JavaScript 转换为 jQuery 的资源?

Jquery : .替换部分字符串返回 "Unexpected token ILLEGAL"

javascript - 使用 JQuery 代替 CSS 的幻灯片动画

java - 如何实现html电子邮件表单?