Javascriptで、下のようなスクリプトを組みました。
どうしても親ノードの下の子ノードの数さえ取得できません。
list[0].bblength.length;
これが無効になってしまいます。
ほかにも
list.item(0).bblength.length;
も試しましたが、取得できません。
なにが悪いのか、さっぱりで、ネットでもいろいろ検索したのですが解決できませんでした。
なにが問題なのか、どなたかわかりませんか? お教えください。
-------------------------------
<html><head> <title> </title>
<script type="text/javascript">
function web(){
var oyanode =document.getElementsByClassName('oya');
var bbnode = document.getElementsByName("bb");
var oyaLength=oyanode.length;
var bblength=bbnode.length;
var ans;
var ans=list[0].bblength.length;
document.getElementById("crt").innerHTML="oyaノードの数="+oyaLength+"<br>bbノードの数="+bblength+"<br>1つ目のoyaノードの中のbbノードの数="+ans;
}
</script>
</head>
<body>
<div class="oya">
<div name="bb"></div>
<div name="bb"></div>
<div name="bb"></div>
<div name="bb"></div>
</div>
<div class="oya">
<div name="bb"></div>
<div name="bb"></div>
<div name="bb"></div>
<div name="bb"></div>
</div>
<button onclick="web()">クリック</button><br>
<span id="crt"></span>
</body></html>
スクリプトに間違いがありました。正しくは以下の通りです。
var ans=list[0].bbnode.length;
この部分でエラー停止してしまいます。
function web(){ var oyanode =document.getElementsByClassName('oya'); var bbnode = document.getElementsByName("bb"); var oyaLength=oyanode.length; var bblength=bbnode.length; var ans; var ans=list[0].bbnode.length; document.getElementById("crt").innerHTML="oyaノードの数="+oyaLength+"<br>bbノードの数="+bblength+"<br>1つ目のoyaノードの中のbbノードの数="+ans;}</script>
var ans=list[0].bbnode.length;がエラーになる原因は、listが定義されていないからです。
未定義オブジェクトは"0"メンバを持ちません。
こういうことがやりたいのでしょうか?
var ans=oyanode[0].children.length;
それともこう?
var ans=Array.filter(oyanode[0].children, function(i) i.getAttribute("name")=="bb").length;
追記:
「親ノードの下の特定のnameの子ノードごとに異なったデータを表示させたい」というのはこういったコードで実現できます。
for (var i=0; i<oyanode[0].children.length; i++) {
var el = oyanode[0].children[i];
if (el.getAttribute("name") == "bb") {
el.innerHTML = i;
}
}