উত্তর:
কয়েকটি উপায়:
if (element.firstChild) {
// It has at least one
}
বা hasChildNodes()
ফাংশন:
if (element.hasChildNodes()) {
// It has at least one
}
বা এর length
সম্পত্তি childNodes
:
if (element.childNodes.length > 0) { // Or just `if (element.childNodes.length)`
// It has at least one
}
যদি আপনি কেবলমাত্র সমস্ত আধুনিক ব্রাউজারগুলিতে শিশু উপাদানগুলির (যেমন পাঠ্য নোড, বৈশিষ্ট্য নোড ইত্যাদির বিপরীতে) জানতে চান (এবং আই 8 - আসলে, এমনকি আই in) আপনি এটি করতে পারেন: ( ফ্লোরিয়ানকে ধন্যবাদ !)
if (element.children.length > 0) { // Or just `if (element.children.length)`
// It has at least one element as a child
}
যে উপর নির্ভর করে children
সম্পত্তি, যা সংজ্ঞায়িত করা হয় নি DOM1 , DOM2 , বা DOM3 , তবে যার কাছে সর্বজনীন সমর্থন রয়েছে। (এটি আই 6 এবং উপরে এবং ক্রোম, ফায়ারফক্স এবং অপেরাতে কমপক্ষে নভেম্বর ২০১২ পর্যন্ত কাজ করেছে, এটি মূলত লেখা হয়েছিল।) যদি পুরানো মোবাইল ডিভাইসগুলি সমর্থন করে তবে অবশ্যই সমর্থনটি যাচাই করতে ভুলবেন না।
আপনার যদি আইই 8 এবং তার আগে সমর্থন না প্রয়োজন হয় তবে আপনি এটিও করতে পারেন:
if (element.firstElementChild) {
// It has at least one element as a child
}
যে উপর নির্ভর করে firstElementChild
। পছন্দ করুন children
, এটি DOM1-3 তেও সংজ্ঞায়িত করা হয়নি তবে children
এটি আইই 9 পর্যন্ত আই-তে যুক্ত করা হয়নি।
আপনি যদি ডিওএম 1 এ সংজ্ঞায়িত কিছুতে আটকে থাকতে চান (সম্ভবত আপনাকে সত্যিই অস্পষ্ট ব্রাউজারগুলি সমর্থন করতে হবে), আপনাকে আরও কাজ করতে হবে:
var hasChildElements, child;
hasChildElements = false;
for (child = element.firstChild; child; child = child.nextSibling) {
if (child.nodeType == 1) { // 1 == Element
hasChildElements = true;
break;
}
}
এগুলি সমস্তই ডিওএম 1 এর একটি অংশ এবং প্রায় সর্বজনীন সমর্থিত।
এটি কোনও ফাংশনে মুড়িয়ে ফেলা সহজ হবে, যেমন:
function hasChildElement(elm) {
var child, rv;
if (elm.children) {
// Supports `children`
rv = elm.children.length !== 0;
} else {
// The hard way...
rv = false;
for (child = element.firstChild; !rv && child; child = child.nextSibling) {
if (child.nodeType == 1) { // 1 == Element
rv = true;
}
}
}
return rv;
}
div
উপাদান আছে কিনা তা আমি কীভাবে চেক করব ? div
xyz
for (child = element.firstChild; child; child = child.nextSibling )
ভোট দেওয়ার মতো লুপের অবস্থাটি কখনও দেখেনি । ধন্যবাদ TJ
element.firstChild
অ- হতে null
যখন element.children.length
হয় 0
: firstChild
এবং এই ধরনের কহা নোড উপাদান, টেক্সট নোড, মন্তব্য নোট, ইত্যাদি সহ .; children
বিশুদ্ধরূপে উপাদান শিশুদের একটি তালিকা । আধুনিক ব্রাউজারগুলিতে আপনি firstElementChild
পরিবর্তে ব্যবহার করতে পারেন ।
স্ল্যাশনিক এবং ববিন্স উল্লেখ হিসাবে, hasChildNodes()
সাদা স্থান (পাঠ্য নোড) এর জন্য সত্য ফিরে আসবে। তবে, আমি এই আচরণটি চাইনি, এবং এটি আমার পক্ষে কাজ করেছে :)
element.getElementsByTagName('*').length > 0
সম্পাদনা করুন : একই কার্যকারিতার জন্য, এটি আরও ভাল সমাধান:
element.children.length > 0
children[]
এটি একটি উপসেট childNodes[]
, এতে কেবল উপাদান রয়েছে।
উপাদানটির চাইল্ড নোড রয়েছে কিনা তা আপনি পরীক্ষা করতে পারেন element.hasChildNodes()
। মোজিলায় সাবধান থাকুন যদি এটি ট্যাগের পরে সাদা জায়গা হয় তবে এটি আপনাকে ট্যাগের যাচাই করতে হবে true
আপনি নিম্নলিখিতগুলি করতে পারেন:
if (element.innerHTML.trim() !== '') {
// It has at least one
}
এটি hasChildNodes
শূন্যস্থান হিসাবে খালি হিসাবে (কেবলমাত্র সত্যটি প্রত্যাশা করে) খালি উপাদানগুলির জন্য ট্রিট () পদ্ধতি ব্যবহার করে ।
দেরীতে কিন্তু দস্তাবেজের খণ্ডটি নোড হতে পারে:
function hasChild(el){
var child = el && el.firstChild;
while (child) {
if (child.nodeType === 1 || child.nodeType === 11) {
return true;
}
child = child.nextSibling;
}
return false;
}
// or
function hasChild(el){
for (var i = 0; el && el.childNodes[i]; i++) {
if (el.childNodes[i].nodeType === 1 || el.childNodes[i].nodeType === 11) {
return true;
}
}
return false;
}
দেখুন:
https://github.com/k-gun/so/blob/master/so.dom.js#L42
https://github.com/k-gun/so/blob/master/so.dom.js # L741
চাইল্ডএলমেন্ট অ্যাকাউন্টের সম্পত্তিটি চেষ্টা করুন :
if ( element.childElementCount !== 0 ){
alert('i have children');
} else {
alert('no kids here');
}
একটি পুনরায় ব্যবহারযোগ্য isEmpty( <selector> )
ফাংশন।
আপনি এটি উপাদানগুলির সংগ্রহের দিকেও চালাতে পারেন (উদাহরণ দেখুন)
const isEmpty = sel =>
![... document.querySelectorAll(sel)].some(el => el.innerHTML.trim() !== "");
console.log(
isEmpty("#one"), // false
isEmpty("#two"), // true
isEmpty(".foo"), // false
isEmpty(".bar") // true
);
<div id="one">
foo
</div>
<div id="two">
</div>
<div class="foo"></div>
<div class="foo"><p>foo</p></div>
<div class="foo"></div>
<div class="bar"></div>
<div class="bar"></div>
<div class="bar"></div>
true
শিগগিরই কোনও উপাদান স্পেস বা নিউলাইনগুলির পাশে যে কোনও ধরণের সামগ্রী রেখে দেয় (এবং লুপ থেকে প্রস্থান করে) returns
<script type="text/javascript">
function uwtPBSTree_NodeChecked(treeId, nodeId, bChecked)
{
//debugger;
var selectedNode = igtree_getNodeById(nodeId);
var ParentNodes = selectedNode.getChildNodes();
var length = ParentNodes.length;
if (bChecked)
{
/* if (length != 0) {
for (i = 0; i < length; i++) {
ParentNodes[i].setChecked(true);
}
}*/
}
else
{
if (length != 0)
{
for (i = 0; i < length; i++)
{
ParentNodes[i].setChecked(false);
}
}
}
}
</script>
<ignav:UltraWebTree ID="uwtPBSTree" runat="server"..........>
<ClientSideEvents NodeChecked="uwtPBSTree_NodeChecked"></ClientSideEvents>
</ignav:UltraWebTree>
children
কেবল ডিওএম 4 এ যুক্ত হয়েছিল। এটি যে কোনও পরিচিত ব্রাউজারে সমর্থিত তা জেনে আমি ভেবেছিলাম এটি বেশিরভাগ DOM0 / 1।