Аналог функции getElementsByTagName
Подскажите пожалуйста как написать аналог функции getElementsByTagName?
Я хочу вместо getElementsByTagName() использовать сокращенный вариант например gt(). Возможно ли это сделать кроссбраузерно? В нете нашел пример для outerHTML но как им пользоваться незнаю.
if (typeof(HTMLElement) != "undefined") {
var _emptyTags = {
"IMG": true,
"BR": true,
"INPUT": true,
"META": true,
"LINK": true,
"PARAM": true,
"HR": true
};
HTMLElement.prototype.__defineGetter__("outerHTML", function () {
var attrs = this.attributes;
var str = "<" + this.tagName;
for (var i = 0; i < attrs.length; i++)
str += " " + attrs[ i ].name + "=\"" + attrs[ i ].value + "\"";
if (_emptyTags[this.tagName])
return str + ">";
return str + ">" + this.innerHTML + "</" + this.tagName + ">";
});
HTMLElement.prototype.__defineSetter__("outerHTML", function (sHTML) {
var r = this.ownerDocument.createRange();
r.setStartBefore(this);
var df = r.createContextualFragment(sHTML);
this.parentNode.replaceChild(df, this);
});
}
Если возможно напишите код с комментариями!:( :( :( |
Херней страдаешь.
<div></div>
<div></div>
<div><span></span><span></span></div>
<script>
function query(selector, context) {
return (context || document).querySelectorAll(selector);
}
var divs = query('div');
alert (divs.length);
var spans = query('span', divs[2]);
alert (spans.length);
</script>
|
Ты меня не правильно понял я имел в виду чтобы функция gt() работала примерно так:
document.gt('div').item(0).innerHTML = 'someText'; или document.getElementById('mid').gt('span').item(0) = 'someText'; |
Не трогай прототипы DOM-объектов. Зачем это нужно?
|
Для простоты и скорости в работе.
Когда в сайте нужно раз со 100 использовать функцию getElementsByTagName лучше написать её аналог |
насколько
document.gt('class')
document.getElementById('id').gt('class')
быстрее чем
gt('class')
gt('class', document.getElementById('id'))
или тем более
q('.class')
q('#id .class')
? А вобще - подключи jQuery и не парься. |
danik Спасибо!
|
| Часовой пояс GMT +3, время: 20:30. |