Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Замена без innerHTML (https://javascript.ru/forum/misc/52298-zamena-bez-innerhtml.html)

Erolast 12.12.2014 17:24

Переходите уже на новые стандарты :)
ES7:
let number = +(prompt("Введите число."));
alert([1, 2, 3].includes(number));

Полифилл:
if (![].includes) {
  Array.prototype.includes = function(searchElement/*, fromIndex*/) {
    if (this === undefined || this === null) {
      throw new TypeError('Cannot convert this value to object');
    }
    var O = Object(this);
    var len = parseInt(O.length) || 0;
    if (len === 0) {
      return false;
    }
    var n = parseInt(arguments[1]) || 0;
    var k;
    if (n >= 0) {
      k = n;
    } else {
      k = len + n;
      if (k < 0) k = 0;
    }
    while (k < len) {
      var currentElement = O[k];
      if (searchElement === currentElement ||
         (searchElement !== searchElement && currentElement !== currentElement)) {
        return true;
      }
      k++;
    }
    return false;
  }
}

---
Крутой, чем твой вариант лучше "~[1, 2, 3].indexOf(number)"?

bes 12.12.2014 20:36

Цитата:

Сообщение от tippula
Можно ли заменить на странице <h2>Zagolovok-1</h2>
не перерисовывая весь элемент в котором находиться h2 ?

судя по тому, что никто до сих пор не предложил, возможно не понял вопроса
<h1>Zagolovok-1</h1>
<button>click</button>
<script>
document.querySelector("button").addEventListener("click", function () {
	var h1 = document.querySelector("h1");
	if ( h1 ) {
		h1.outerHTML = "<h2>Zagolovok-2</h2>";
	}
	alert(document.querySelector("h2").innerHTML);
});
</script>


PS: Erolast, забыл кнопку run

Erolast 13.12.2014 11:13

А includes пока только в FF Nightly реализован. Вот вместе с полифиллом рабочий пример:
if (![].includes) {
  Array.prototype.includes = function(searchElement/*, fromIndex*/) {
    if (this === undefined || this === null) {
      throw new TypeError('Cannot convert this value to object');
    }
    var O = Object(this);
    var len = parseInt(O.length) || 0;
    if (len === 0) {
      return false;
    }
    var n = parseInt(arguments[1]) || 0;
    var k;
    if (n >= 0) {
      k = n;
    } else {
      k = len + n;
      if (k < 0) k = 0;
    }
    while (k < len) {
      var currentElement = O[k];
      if (searchElement === currentElement ||
         (searchElement !== searchElement && currentElement !== currentElement)) {
        return true;
      }
      k++;
    }
    return false;
  }
}

alert([1, 2, 3, 4, 5, 6, 7, 8, 9, 10].includes(+(prompt("Введите число от 1 до 10."))));


Часовой пояс GMT +3, время: 13:23.