2011-12-16 4 views
0

У меня есть родительский и дочерний узел. Если родительский элемент содержит> = 1 childnodes, то он должен подтвердить «helllooo», иначе, если родитель не имеет каких-либо дочерних элементов, тогда он должен подтвердить «hi»Проверьте, содержит ли родительский элемент ChildNodes

Но, однако, это не работает. Иногда он отображает «привет» и другие времена «helllooo».

Вот код:

function childnode() { 
    var treeViewData = window["<%=items.ClientID%>" + "_Data"]; 

    //if (treeViewData.selectedNodeID.value != ""){ 
    var selectedNode = document.getElementById(treeViewData.selectedNodeID.value); 
    if (selectedNode.childNodes.count >= 0) { 
    return confirm("heloo"); 
    } 
    else { 
    return confirm("hi"); 
    } 

    return false; // don't send form 
} 
+0

Shift + вкладка пожалуйста –

+0

В тексте, вы говорите, он должен ответить «Heloo», если значение счетчика> = 1, но ваш код имеет> = 0. Это опечатка? –

+0

Я не уверен, что вы имеете в виду? что? – Ish

ответ

0

Вы хотите length недвижимости, а не count собственности. Кроме того, я думаю, что вы имели в виду > 0, вместо >= 0

var selectedNode = document.getElementById(treeViewData.selectedNodeID.value); 
if (selectedNode.childNodes.length > 0) { 
    return confirm("heloo"); 
} 

Это скажет вам, есть ли какие-либо дочерние узлы, включая текстовые узлы. Если вы хотите узнать, есть ли какие-либо дочерние узлы, которые являются элементами, вы можете посмотреть свойство nodeType.

var selectedNode = document.getElementById(treeViewData.selectedNodeID.value); 
var children = selectedNode.childNodes; 
var anyChildElements = false; 

for (var i = 0; i < children.length; i++) 
    if (children[i].nodeType === 1) { 
     anyChildElements = true; 
     break; 
    } 

if (anyChildElements) { 
    return confirm("heloo"); 
} 
+0

Я вставил тот же самый код, но он ничего не делает. Когда вы нажимаете на кнопку, она не показывает мне окно подтверждения – Ish

+0

Отлаживаете ли вы? Проверено на наличие сообщений об ошибках? –

+0

Мероприятие не получает увольнения вообще – Ish

1

Похоже вы работаете в разнице между узлами и элементов. Узлы также могут быть, например. текстовые узлы или узлы. Вам, вероятно, нужны элементы.

У вас также есть проблема, когда нет такого имущества, как count на NodeList. Возможно, вы ищете length.

Попробуйте selectedNode.children.length вместо selectedNode.childNodes.count.

(Кроме того, переменная selectedNode это неверно названы:. document.getElementById возвращает элемент, а не узел)

+0

selectedNode.childElements.length не работает. Событие вообще не увольняется. – Ish

+0

Извините, я опечатал. 'Children.length'. Ответ обновлен. – Domenic

+0

отображает «hi» для обоих узлов. Первый узел состоит только из родительского и второго узлов, состоящего из родительского узла и дочерних узлов. – Ish

Смежные вопросы