Как сделать чтобы вернуло this[0]

282
29 июля 2017, 07:31

Добрый день, мне нужно чтобы javascript вернул innerHTML 1ого элемента через функцию, но он почему-то это не делает. HTMLElement.prototype пробовал ничего не выходит если не сложно объясните в чем проблема.

function parsehtml() { 
   
    return this[0].innerHTML; 
  
} 
 
alert(document.getElementsByClassName('color').parsehtml())
fieldset { 
  float: left; 
} 
 
.colors a:focus:before { 
  content: ' > '; 
  color: red; 
}
<fieldset class="colors"> 
  <legend>Краски</legend> 
  <a class="no_color" href="javascript:void(0)">Краски не нужны</a><br> 
  <a class="color_2" href="javascript:void(0)">Нужно 2 банки краски</a><br> 
  <a class="color_1" href="javascript:void(0)">Нужна одна банка краски</a> 
</fieldset>

Answer 1

Чтобы это заработало, функцию parsehtml нужно добавить в прототип коллекции, которую возвращает функция getElementsByClassName

Например так:

HTMLCollection.prototype.parsehtml = parsehtml; 
 
function parsehtml() { 
 
  return this[0].innerHTML; 
 
} 
 
console.log(document.getElementsByClassName('color').parsehtml())
fieldset { 
  float: left; 
} 
 
.colors a:focus:before { 
  content: ' > '; 
  color: red; 
}
<fieldset class="colors"> 
  <legend>Краски</legend> 
  <a class="color" href="javascript:void(0)">Краски не нужны</a><br> 
  <a class="color" href="javascript:void(0)">Нужно 2 банки краски</a><br> 
  <a class="color" href="javascript:void(0)">Нужна одна банка краски</a> 
</fieldset>

Но так лучше не делать, так как такой подход чреват конфликтами при частом использовании. Гораздо проще сделать функцию, которая будет принимать коллекцию первым параметром.

Answer 2

Расширять нужно не HTMLElement, а HTMLCollection, т.к. getElementsByClassName и пр. возвращают именно его.

HTMLCollection.prototype.getHTML = function() {
    return this[0].innerHTML;
};
var html = document.getElementsByClassName("main").getHTML();

P.S. эх... не успел))

READ ALSO
Как получить новый объект без свойства?

Как получить новый объект без свойства?

Как отфильтровать объект по ключу?

370
Помогите достать элемент (javascript)

Помогите достать элемент (javascript)

Помогите, пожалуйста, никак не могу достать элементДля выделения одной кнопки другим цветом, крашу все в старый синий, а выбранную в тёмный

219
each затирает переменную, выводит только последнее значение

each затирает переменную, выводит только последнее значение

Выводит только последнее значение, хотя их намного большеВнутри конструкции поочередно данные выводит

208