Изменение класса div при нажатии на него?

#javascript

#javascript

Вопрос:

Как я могу изменить имя класса div при нажатии на него? Например:

 <div class="first_name" onclick="changeClass();" id="first_name"></div>
 

Я хочу изменить его следующим образом, когда пользователь нажимает на div

 <div class="second_name" onclick="changeClass();"></div>
 

Я написал JavaScript как:

 <script language="javascript"> 
  function change_autorefreshdiv(){
    var NAME = document.getElementById("first_name")
    NAME.className="second_name"
  } 
</script>
 

Это работает только в первом случае. То есть при загрузке страницы, если я нажму на нее, first_name изображение изменится на second_name . Но, нажав на него еще раз, он не вернет second_name first_name значение «Кому».

Комментарии:

1. Вы хотите также удалить id атрибут?

Ответ №1:

Вы должны определить имя второго класса. В настоящее время у вас есть функция, которая изменяет имя класса на жестко заданное значение, независимое от текущего имени класса. Смотрите также: MDN: if …else

 function change_autorefreshdiv(){
    var NAME = document.getElementById("first_name");
    var currentClass = NAME.className;
    if (currentClass == "second_name") { // Check the current class name
        NAME.className = "first_name";   // Set other class name
    } else {
        NAME.className = "second_name";  // Otherwise, use `second_name`
    }
}   
 

Комментарии:

1. Блестяще. Большое вам за это спасибо 😉

2. @user632347 Если вы заинтересованы в изучении базового / продвинутого JavaScript, взгляните на developer.mozilla.org/en/JavaScript/Guide

Ответ №2:

простая функция javascript, поместите ее в свой application.js , или тег скрипта:- (jQuery должен быть включен для запуска следующей функции)

 function changeClass(){
        $("#first_name").attr("class", "class-name-you-want-to-assign");
    }
 

Комментарии:

1. вы не указали, что для вашего решения требуется jQuery или аналогичный фреймворк

Ответ №3:

Довольно поздний ответ, но реакция, отмеченная как ответ, может быть сокращена:

 function change_autorefreshdiv(){
     var NAME = document.getElementById("first_name");
     NAME.className = (NAME.className == "second_name") ? "first_name" : "second_name";
}
 

Это сокращенная нотация структуры if-else . Он проверяет className , равно ли значение «second_name».
Если это так, currentClass переменная станет «first_name», если это не так (имеется в виду, что это «first_name»),
она станет «second_name».

Ответ №4:

Это потому, что для этого нет кода. Добавьте небольшую проверку. Я также добавил несколько точек с запятой. Интересно, сработает ли ваш скрипт вообще в первый раз.

 <script language="javascript"> 
function change_autorefreshdiv(){
  var NAME = document.getElementById("first_name");
  if (NAME.className==="second_name")
  {
    NAME.className="first_name";
  }
  else
  {
    NAME.className="second_name";
  }
}   
</script>
 

Ответ №5:

Вы должны использовать if оператор -, чтобы отменить его. Вот пример:

 function change_autorefreshdiv(){
    var NAME = document.getElementById("first_name")
    var currentClass = NAME.className;
    if(currentClass == "second_name"){
        NAME.className = "first_name";
    } else {
        NAME.className = "second_name";
    }
}