【问题标题】:javascript change class of multiple inputs onclickjavascript更改多个输入onclick的类
【发布时间】:2012-08-03 07:21:37
【问题描述】:

我想更改我的表单的某些输入的类别,在点击时具有 class='mypost_title'。

我试过了,还是不行

<a href='' onclick='popup_mypost(e)'>change me</a>
<a href='' id=edit-href onclick='popup_mypost(e)'>back me</a>

<script>
    function popup_mypost(e) 
    {
        var inputs = document.getElementsByClassName("mypost_title");
        for(var i = 0; i < inputs.length; i++) 
            {
            inputs[i].className = "change";
            }

        var edit_href = document.getElementById("edit-href");
        edit_href.onclick = function()
        {
            var inputs = document.getElementsByClassName("change");
            for(var i = 0; i < inputs.length; i++) 
                {
                inputs[i].className = "mypost_title";
                }
        }
    }
</script>

【问题讨论】:

  • 我认为是:getElementsByClassName(..);你错过了元素中的“s”
  • @Sudhir 好建议,但我认为跨浏览器效果不佳。
  • 没有。我无法理解 jquery .. :( 只有 javascript。但如果它很简单,那么 ok
  • 你错过了 document.getElementsByClassName();请使用萤火虫,
  • @Sudhir 是的,谢谢我错过了's'

标签: javascript css class onclick


【解决方案1】:

方法是getElementsByClassName - 即,您错过了s

文档:https://developer.mozilla.org/en-US/docs/DOM/document.getElementsByClassName

【讨论】:

    【解决方案2】:

    更改此行并尝试:

    var inputs = document.getElementsByClassName("mypost_title");

    【讨论】:

      【解决方案3】:

      对于 jQuery 方法,请参阅下面的代码。我个人觉得这更容易阅读和理解。这也将完全跨浏览器工作!

      <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
      <script>
      
      $(document).ready(function() {
          $(".mypost_title").each(function() {
              $(this).addClass("change");
          });
      });
      
      </script>
      

      我快速检查了与getElementsByClassName 的跨浏览器兼容性,结果非常令人惊讶。 IE8及以下不支持!请在此处查看此表以获取tests


      编辑

      我猜测您在这里寻找什么。这是我的解释:

      当单击这些 div 之一时,您想将 change 类添加到单击的 div 并从所有其他 div 中删除 change 类吗?

      在这种情况下你会这样做:

      //This focus event will fire when the user "focuses" on an input
      $(".mypost_title").focus(function() {
          $(this).removeClass("mypost_title");
          $(this).addClass("change");
      });
      
      //This blur event will fire when the user clicks outside the input, or tabs out etc
      $(".mypost_title").blur(function() {
          $(this).removeClass("change");
          $(this).addClass("mypost_title");
      });
      

      【讨论】:

      • 我如何知道该函数是否是我正在调用的函数?我有 onclick='popup_mypost(e)' 。既然你告诉我 getElementsByClass 在其他浏览器上不起作用,现在我想使用你提出的
      • @IvorySantos 请检查我更新的答案,这是您要找的吗?如果不能,请您多展示一些 JavaScript 代码吗?
      • 我更新了我的问题,抱歉我真的不知道 jquery。首先,当点击时,类必须是="change"。然后点击后面的时候,class必须是="mypost_title" 谢谢
      猜你喜欢
      • 2013-09-15
      • 2020-08-02
      • 1970-01-01
      • 1970-01-01
      • 2016-06-18
      • 2022-06-13
      • 2010-12-31
      • 2014-03-17
      • 1970-01-01
      相关资源
      最近更新 更多