简体   繁体   English

在JavaScript中添加删除类功能

[英]Add remove class functionality in JavaScript

I am making a add or remove class functionality in JavaScript but it is not working. 我在JavaScript中添加或删除类功能,但它无法正常工作。

here is my code... 这是我的代码......

 if (window.location.hash == "#/profile/"){
        document.getElementById("tabMenu").removeClass("bottomTabs").addClass("hidden");
    } else{
        document.getElementById("tabMenu").className += "show";
    };

If you are using AngularJS, then use the angular.element("#elementID") function to activate its internal jqlite so your code would look like this. 如果您使用的是AngularJS,则使用angular.element(“#elementID”)函数激活其内部jqlite,以便您的代码看起来像这样。

var tabMenu = angular.element("#tabMenu");
if (window.location.hash == "#/profile/"){
        tabMenu.addClass("hidden")
    } else{
        tabMenu.removeClass("hidden")
    };

Click here for angular.element documentation 单击此处获取angular.element文档

If you want some simple and general purpose functions in plain javascript for adding and removing classes that won't disturb any other classes on the element that you can use in lots of places, you can use these: 如果你想在普通的javascript中使用一些简单和通用的函数来添加和删除不会干扰你可以在很多地方使用的元素上的任何其他类的类,你可以使用这些:

function removeClass(elem, cls) {
    var str = " " + elem.className + " ";
    elem.className = str.replace(" " + cls + " ", " ").replace(/^\s+|\s+$/g, "");
}

function addClass(elem, cls) {
    elem.className += (" " + cls);
}


 var elem = document.getElementById("tabMenu");
 if (window.location.hash == "#/profile/"){
        removeClass(elem, "bottomTabs");
        addClass(elem, "hidden");
    } else {
        addClass(elem, "show");
 }
<script type="text/javascript">
$(document).ready(function () {
    if (window.location.hash == "#/profile/") {
        $("#tabMenu").hide();
    }
}
</script>

Try this code. 试试这个代码。 Before this add jquery in your page 在此之前在页面中添加jquery

Using pure JS, it would look like below: 使用纯JS,它看起来如下所示:

var myElement = document.getElementById("tabMenu");
if (window.location.hash == "#/profile/"){
    myElement.className = myElement.className.replace("bottomTabs", "");
    myElement.className = myElement.className + " hidden";
} else{
    myElement.className = myElement.className + " show";
};

See the demo below: 请参阅下面的演示:

JSFiddle 的jsfiddle

Since you are using angular, why not let ng-class do the adding and removing of classes? 既然你正在使用angular,为什么不让ng-class做添加和删除类呢?

<div ng-class="{'bottomTabs': !onProfile(), 'hidden': onProfile(), 'show': !onProfile()}">
</div>

You just need to create a function that returns true when the profile page is in view: 您只需创建一个在配置文件页面处于视图中时返回true的函数:

$scope.onProfile = function() {
   return window.location.hash == "#/profile";
};

Here is a working demo: http://plnkr.co/xh3KkxaHKuLtqIPpfE5Z 这是一个工作演示: http//plnkr.co/xh3KkxaHKuLtqIPpfE5Z

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM