Что не так с этой простой функцией javascript, чтобы поменять класс CSS тела HTML? - PullRequest
1 голос
/ 24 февраля 2010

Я слишком долго на это пялился. Я поместил оповещения повсюду, и поток правильный. Стили существуют. Тело начинается с класса "styleBlack". Условие оператора if выполнено, и класс тела становится "styleLight". Второй вызов соответствует условию оператора else, но innerHTML для mDiv не меняется, равно как и класс тела.

function ColorSwap() {
  var mDiv = document.getElementById("m_divSwap");
  if (mDiv.innerHTML = "Go Light") {
    mDiv.innerHTML = "Go Dark";
    document.body.className = "styleLight";
  } else {
    mDiv.innerHTML = "Go Light";
    document.body.className = "styleBlack";
  }
}

Ответы [ 3 ]

10 голосов
/ 24 февраля 2010

Вы назначаете вместо сравнения

Изменение

if (mDiv.innerHTML = "Go Light")

до

if (mDiv.innerHTML === "Go Light")
1 голос
/ 24 февраля 2010

На первый взгляд кажется, что в вашем if вместо сравнения строкового значения (с ==) вы присваиваете (с =).

0 голосов
/ 24 февраля 2010

По моему мнению, вы могли бы использовать JQuery, который является кросс-браузерным стандартным фреймворком javascript, вы можете скачать здесь

Также вы можете добавить атрибут id к вашему телу, как

И код jquery может быть таким:

function ColorSwap() {
  if ($("#m_divSwap").text() == "Go Light") 
  {
    $("#m_divSwap").text("Go Dark");
    $("#mybody").removeClass('styleBlack');
    $("#mybody").addClass('styleLight');

  }
  else 
  {
    $("#m_divSwap").text("Go Light");
    $("#mybody").removeClass('styleLight');
    $("#mybody").addClass('styleBlack ');    
  }
}

Надеюсь, это поможет. С уважением. Хосе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...