JavaScript'te bir HTML öğesinin türünü nasıl belirleyebilirim?


191

JavaScript'te bir HTML öğesinin türünü belirlemek için bir yol gerekir. Kimliği var, ancak öğenin kendisi bir <div>, bir <form>alan, bir <fieldset>, vb. Olabilir. Bunu nasıl başarabilirim?

Yanıtlar:


290

nodeNamearadığınız özelliktir. Örneğin:

var elt = document.getElementById('foo');
console.log(elt.nodeName);

Büyük nodeNameve köşeli parantezler olmadan öğe adını döndürür. Bu, bir <div>öğenin öğe olup olmadığını kontrol etmek istiyorsanız, bunu aşağıdaki gibi yapabileceğiniz anlamına gelir :

elt.nodeName == "DIV"

Bu size beklenen sonuçları vermese de:

elt.nodeName == "<div>"

29
Bunu şu şekilde yapmanızı öneririm: eğer (elt.nodeName.toLowerCase () === "div") {...} Bu şekilde, bir nedenden dolayı artık büyük harflerle (küçük veya karışık) döndürülmezse, değiştirmek zorunda kalmazsınız ve bu kod yine de iyi çalışır.
TheCuBeMan

6
@TheCuBeMan'a yanıt olarak, toLowerCase () kullanmak, nodeName öğesinin var olduğundan da emin olmanız gerektiği anlamına gelir (eğer mümkünse elt aslında bir öğe değilse):if (elt.nodeName && elt.nodeName.toLowerCase() === 'div') { ... }
Erik Koopmans

Ne hakkında localName?
bomba


7

Bazen istiyorsun element.constructor.name

document.createElement('div').constructor.name
// HTMLDivElement

document.createElement('a').constructor.name
// HTMLAnchorElement

document.createElement('foo').constructor.name
// HTMLUnknownElement

7

Genel kod incelemesini şu yollarla kullanabilirsiniz instanceof:

var e = document.getElementById('#my-element');
if (e instanceof HTMLInputElement) {}         // <input>
elseif (e instanceof HTMLSelectElement) {}    // <select>
elseif (e instanceof HTMLTextAreaElement) {}  // <textarea>
elseif (  ... ) {}                            // any interface

Arayüzlerin tam listesi için buraya bakın .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.