Javascript(不是jquery)按钮onclick,函数更改按钮调用函数的类

Posted

技术标签:

【中文标题】Javascript(不是jquery)按钮onclick,函数更改按钮调用函数的类【英文标题】:Javascript(not jquery) button onclick, function changes class of button calling function 【发布时间】:2014-12-22 13:29:01 【问题描述】:

我知道您可以使用

更改按钮的类别
 document.getElementById("ID1").setAttribute("class", "NewClass");

但是说如果单击按钮,我想将类更改为active,是否可以在不为按钮分配 ID 的情况下执行此操作? 我也不想使用此类更改所有按钮,并且知道您也可以按类使用获取元素。

按钮是由另一段 javascript 生成的,看起来像

    <button class="btn" onclick="myFunction(this.innerhtml)">A</button>
    <button class="btn" onclick="myFunction(this.innerHTML)">B</button>
    <button class="btn" onclick="myFunction(this.innerHTML)">C</button>
    <button class="btn" onclick="myFunction(this.innerHTML)">D</button>
    <button class="btn" onclick="myFunction(this.innerHTML)">F</button>
    <button class="btn" onclick="myFunction(this.innerHTML)">G</button>

任何帮助将不胜感激。 另外,如果您需要更多信息,请告诉我。

【问题讨论】:

你能改变myFunction()??????? 而不是使用 this.innerHTML 只需使用 this 然后您就可以访问被单击的按钮,而不仅仅是文本。那么你可以这样做 this.setAttribute("class", "NewClass");在函数中。 @rajeshkakawat 是的,它现在正在做其他事情,只是为了获得价值。 @Brian,我会在函数中使用this.setAttribute("class", "NewClass"),还是使用任何变量。例如,如果是MyFunction(x),我会使用x.setAttribute("class", "NewClass") 吗? 我添加了我的意思的答案 【参考方案1】:
<button class="btn" onclick="myFunction(this)">A</button>


<script>
function myFunction(button) 
    var text = button.innerHTML;
    // do whatever with text that you were doing before...
    button.setAttribute("class", "active");

</script>

【讨论】:

效果很好,干杯:) 不敢相信我没想过要尝试!【参考方案2】:
<script type="text/javascript">
    function a()
        this.classList.toggle('first');
        this.classList.toggle('sec');
    
    document.querySelector('#container').addEventListener('mouseenter', a )
    document.querySelector('#container').addEventListener('mouseleave', a )
</script>

来自How to toggle class using pure javascript in html

【讨论】:

我想要它,如果它被点击,而不是悬停,但这很有用。 +1.谢谢你:)【参考方案3】:

试试这样的

html

<button class="btn" onclick="myFunction(this)">A</button>

javascript

function myFunction(btn)
    btn.setAttribute("class", "NewClass");// change class

    btn.innerHTML // use your inner html here

【讨论】:

另一个答案是在你之前发布的,所以我接受了那个答案,不过我很感激你的帮助:) +1【参考方案4】:
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>Test Page</title>
        <link rel="stylesheet" type="text/css" src="css/style.css" />

    </head>
<body>
    <button class="btn" onclick="myFunction(this)">A</button>
    <button class="btn" onclick="myFunction(this)">B</button>
    <button class="btn" onclick="myFunction(this)">C</button>
    <button class="btn" onclick="myFunction(this)">D</button>
    <button class="btn" onclick="myFunction(this)">F</button>
    <button class="btn" onclick="myFunction(this)">G</button>

    <script>
                function myFunction(object)
                    object.className = object.className + " btn-active";
                
        </script>
</body>
</html>

【讨论】:

这不会改变所有按钮吗?【参考方案5】:

这可能就是你想要的

(function() 
    var buttons = document.getElementsByClassName('btn');
    if(buttons && buttons.length > 0) 
        for(var i=0; i < buttons.length; i++) 
            var button = buttons[i];
            button.addEventListener('click', function(e) 
                e.preventDefault();
                this.classList.toggle('active');
            );
        
    
)();

您正在为所有按钮附加一个点击事件处理程序。

http://jsfiddle.net/doiks14/zn6dgn0m/5/

【讨论】:

这非常有用,谢谢 :) 我可能会继续切换按钮,所以 +1 这也使用任何 jquery 吗? 不,这只是 JavaScript 我查看了切换功能,它看起来像是一个 jquery 插件? developer.mozilla.org/en-US/docs/Web/API/Element.classList - 这是一个原生 JavaScript 函数,但如果您想支持旧版浏览器或只是使用另一种切换方式,您可能需要使用 polyfill。

以上是关于Javascript(不是jquery)按钮onclick,函数更改按钮调用函数的类的主要内容,如果未能解决你的问题,请参考以下文章

当javascript在元素上调用提交时,jQuery覆盖表单提交不起作用

如何将 ExtJS“复选框”(按钮)与 Javascript/JQuery 同步?

使用 javascript/jquery 检测 Asp.Net 表单是不是有效

单击 HTML 表格并获取行号(使用 Javascript,而不是 jQuery)

每次单击按钮时,是不是可以更改背景颜色并以纯 javascript 变回原始颜色?

检查单选按钮是不是在javascript中被选中/未选中的函数[重复]