Добрый день, мне нужно чтобы 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>
Чтобы это заработало, функцию 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>
Но так лучше не делать, так как такой подход чреват конфликтами при частом использовании. Гораздо проще сделать функцию, которая будет принимать коллекцию первым параметром.
Расширять нужно не HTMLElement, а HTMLCollection, т.к. getElementsByClassName и пр. возвращают именно его.
HTMLCollection.prototype.getHTML = function() {
return this[0].innerHTML;
};
var html = document.getElementsByClassName("main").getHTML();
P.S. эх... не успел))
Продвижение своими сайтами как стратегия роста и независимости