this.id
(як ти знаєш)
this.value
(для більшості типів вводу. Єдині проблеми, які я знаю, - це IE, коли у елементів <select>
немає value
властивостей, встановлених на його <option>
елементах, або радіовведення в Safari.)
this.className
щоб отримати або встановити весь властивість "класу"
this.selectedIndex
проти a, <select>
щоб отримати вибраний індекс
this.options
проти а, <select>
щоб отримати список <option>
елементів
this.text
проти, <option>
щоб отримати його текстовий вміст
this.rows
проти, <table>
щоб отримати колекцію <tr>
елементів
this.cells
проти a, <tr>
щоб отримати його клітини (td & th)
this.parentNode
отримати безпосереднього батька
this.checked
щоб отримати перевірений стан checkbox
Подяки @Tim Down
this.selected
щоб отримати вибраний стан option
Подяки @Tim Down
this.disabled
щоб отримати статус відключеного input
Подяки @Tim Down
this.readOnly
щоб отримати стан readOnly завдяки input
Подяки @Tim Down
this.href
проти <a>
елемента, щоб отримати йогоhref
this.hostname
проти <a>
елемента, щоб отримати область йогоhref
this.pathname
проти <a>
елемента, щоб отримати його шляхhref
this.search
проти <a>
елемента, щоб отримати його рядок запитуhref
this.src
проти елемента, де допустимо мати а src
... Я думаю, ви зрозуміли ідею.
Будуть часи, коли продуктивність має вирішальне значення. Наприклад, якщо ви виконуєте щось у циклі багато разів, ви можете захопити jQuery.
Загалом ви можете замінити:
$(el).attr('someName');
з:
Зверху було погано сформульовано. getAttribute
не є заміною, але вона отримує значення атрибута, надісланого з сервера, і його відповідне setAttribute
встановить його. Необхідна в деяких випадках.
Висловлювання, подані нижче, накривали це. Дивіться цю відповідь для кращого лікування.
el.getAttribute('someName');
... для прямого доступу до атрибуту. Зауважте, що атрибути не збігаються з властивостями (хоча вони іноді відображають один одного). Звичайно, setAttribute
теж є.
Скажімо, у вас виникла ситуація, коли ви отримали сторінку, де вам потрібно розгортати всі теги певного типу. Це швидко і просто за допомогою jQuery:
$('span').unwrap(); // unwrap all span elements
Але якщо їх багато, можливо, ви захочете зробити трохи рідного API DOM:
var spans = document.getElementsByTagName('span');
while( spans[0] ) {
var parent = spans[0].parentNode;
while( spans[0].firstChild ) {
parent.insertBefore( spans[0].firstChild, spans[0]);
}
parent.removeChild( spans[0] );
}
Цей код досить короткий, він працює краще, ніж версія jQuery, і його можна легко перетворити на функцію багаторазового використання у вашій персональній бібліотеці.
Може здатися, що у мене є нескінченний цикл із зовнішньою while
причиною while(spans[0])
, але тому, що ми маємо справу зі "живим списком", він оновлюється, коли ми робимо parent.removeChild(span[0]);
. Це досить чудова функція, яку ми не вистачаємо, працюючи з масивом (або з об’єктом, схожим на масив).
this.id
?