ここには2つの答えがあります。最新のブラウザでは、 メソッドquerySelector
とquerySelectorAll
メソッドを使用して、jQuery と同様のクエリを実行できます。
var ulChildrenOfLi = document.querySelectorAll('li>ul');
for (var u = 0, ulen = ulChildrenOfLi.length; u < ulen; u++) {
var liParent = ulChildrenOfLi[u].parentElement,
aChildOfLi = liParent.querySelector('li>a');
if (aChildOfLi) {
aChildOfLi.className = aChildOfLi.className.replace("hasSubmenu", '') + " hasSubmenu";
}
}
IE をサポートする必要がある場合は、もう少しコードを追加できます。
var lis = document.getElementsByTagName('li');
for (var i = 0, len = lis.length; i < len; i++) {
var li = lis[i],
uls = li.getElementsByTagName('ul'),
children = li.children;
if (uls.length !== 0) {
for (var c = 0, cl = children.length; c < cl; c++) {
var kid = children[c];
kid.className = kid.className.replace("hasSubmenu", '') + " hasSubmenu";
}
}
}
ここに両方のjsFiddleがあります:http://jsfiddle.net/ppxcy/1/