Функция Js работает нормально в Chrome, но не в Firefox - PullRequest
1 голос
/ 23 января 2011

Я пытаюсь сделать некоторые компоненты из моего списка интерактивными, так как в зависимости от ввода пользователя в форме есть много комментариев и настроек.

Продукт состоит из нескольких компонентов,каждый из которых имеет свои свойства, однако проверка продукта основывается на некоторых выбранных значениях компонентов.

У меня есть следующая функция js, которая вызывается с моей точки зрения:

function change_people() {
  money1 = $('money_1').children[0].value;
  if (money1 == 5) {
      $('comment_2').innerText = "sss";
      //$('comment_2').hide();
  } 
  else {
      $('comment_2').innerText = "";
      //$('comment_2').show();
  }
}

document.observe('dom:loaded', function() {
  change_people();
  $('money_1').children[0].observe('change', change_people);
});

КогдаЯ запускаю код в Chrome, он отлично работает, при каждом выборе обновляется следующий комментарий, однако в Firefox он полностью не отвечает!

Кто-нибудь получил представление о причинах этого?

(о, и использует библиотеку прототипов)

Спасибо!

Ответы [ 2 ]

3 голосов
/ 23 января 2011

innerText - версия стандарта Microsoft textContent. Chrome поддерживает оба, но Firefox только стандартный. Вы можете сделать две вещи:

1. Фиктивный тест (выполняется только один раз) Имейте в виду ошибки

var textContent = (function() { 
  var dummy = document.createElement("span");
  dummy.innerHTML = "full <span>support</span>";
  if (dummy.textContent === "full support") {
     return "textContent";
  } else {
     return "innerText";
  }
})();

использование

el[textContent] = "text";

2. Использовать методы DOM

function setText(el, text) {
    while (el.firstChild) {
        el.removeChild(el.firstChild);
    }
    el.appendChild(document.createTextNode(text));
}

использование

setText(el, "text");
1 голос
/ 23 января 2011

Проще использовать Element.update .

$('comment_2').update((money1 == 5) ? 'sss' : '');
...