जावास्क्रिप्ट में एक डोम तत्व के प्रकार का परीक्षण

वोट
87

वहाँ जावास्क्रिप्ट में एक तत्व के प्रकार के परीक्षण करने के लिए एक तरीका है?

इस सवाल का जवाब या प्रोटोटाइप पुस्तकालय की आवश्यकता नहीं हो सकता है, फिर भी निम्न सेटअप पुस्तकालय का उपयोग करना है।

function(event) {
  var element = event.element();
  // if the element is an anchor
  ...
  // if the element is a td
  ...
}
08/10/2008 को 20:42
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


7 जवाब

वोट
65
if (element.nodeName == "A")
{
}
else if (element.nodeName == "TD")
{
}
08/10/2008 को 20:44
का स्रोत उपयोगकर्ता

वोट
112

आप उपयोग कर सकते हैं typeof(N)वास्तविक ऑब्जेक्ट प्रकार प्राप्त करने के लिए है, लेकिन क्या आप क्या करना चाहते टैग, नहीं डोम तत्व के प्रकार की जांच है।

उस मामले में, का उपयोग elem.tagNameया elem.nodeNameसंपत्ति।

क्या तुम सच में रचनात्मक पाने के लिए चाहते हैं, आप के बजाय एक स्विच करता है, तो या यदि / बाकी tagnames और अनाम बंद का एक शब्दकोश का उपयोग कर सकते हैं।

08/10/2008 को 20:45
का स्रोत उपयोगकर्ता

वोट
17

शायद आप भी NodeType जाँच करना होगा:

if(element.nodeType == 1){//element of type html-object/tag
  if(element.tagName=="a"){
    //this is an a-element
  }
  if(element.tagName=="div"){
    //this is a div-element
  }
}

संपादित करें: सही किया nodeType-मूल्य

08/10/2008 को 20:58
का स्रोत उपयोगकर्ता

वोट
6

roenving सही है, लेकिन आप के लिए परीक्षण को बदलने की जरूरत:

अगर (element.nodeType == 1) {
// कोड
}

क्योंकि 3 की nodeType वास्तव में एक पाठ नोड है और 1 की nodeType एक HTML तत्व है। देखें http://www.w3schools.com/Dom/dom_nodetype.asp

09/10/2008 को 02:16
का स्रोत उपयोगकर्ता

वोट
0

मैं एक ही परीक्षण का एक और तरीका है।

Element.prototype.typeof = "element";
var element = document.body; // any dom element
if (element && element.typeof == "element"){
   return true; 
   // this is a dom element
}
else{
  return false; 
  // this isn't a dom element
}

16/01/2016 को 10:18
का स्रोत उपयोगकर्ता

वोट
0

मैं आमतौर पर toString () वापसी मान से समझ गया। इसे दूसरे तरीके से काम करता है डोम तत्वों पहुँचा:

var a = document.querySelector('a');

var img = document.createElement('img');

document.body.innerHTML += '<div id="newthing"></div>';
var div = document.getElementById('newthing');

Object.prototype.toString.call(a);    // "[object HTMLAnchorElement]"
Object.prototype.toString.call(img);  // "[object HTMLImageElement]"
Object.prototype.toString.call(div);  // "[object HTMLDivElement]"

फिर प्रासंगिक टुकड़ा:

Object.prototype.toString.call(...).split(' ')[1].slice(0, -1);

यह क्रोम, एफएफ, ओपेरा, एज, IE9 + में काम करता है (पुराने IE में इसे वापस "[वस्तु वस्तु]")।

25/06/2017 को 14:39
का स्रोत उपयोगकर्ता

वोट
0

हालांकि पिछले जवाब पूरी तरह से काम, मैं सिर्फ एक और तरीका है जहां तत्वों को भी इंटरफ़ेस वे लागू कर दिया है का उपयोग कर वर्गीकृत किया जा सकता जोड़ देगा।

देखें उपलब्ध इंटरफेस के लिए डब्ल्यू 3 संगठन

console.log(document.querySelector("#anchorelem") instanceof HTMLAnchorElement);
console.log(document.querySelector("#divelem") instanceof HTMLDivElement);
console.log(document.querySelector("#buttonelem") instanceof HTMLButtonElement);
console.log(document.querySelector("#inputelem") instanceof HTMLInputElement);
<a id="anchorelem" href="">Anchor element</a>
<div id="divelem">Div Element</div>
<button id="buttonelem">Button Element</button>
<br><input id="inputelem">

इंटरफ़ेस चेक के रूप में 2 तरीकों से बनाया जा सकता है elem instanceof HTMLAnchorElementया elem.constructor.name == "HTMLAnchorElement", दोनों रिटर्नtrue

21/06/2018 को 14:33
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more