どうしても親ノードの下の子ノードの数さえ取得できません。
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;
この部分でエラー停止してしまいます。
<script type="text/javascript"></p> <p>function web(){</p> <p> var oyanode =document.getElementsByClassName('oya');</p> <p> var bbnode = document.getElementsByName("bb");</p> <p> var oyaLength=oyanode.length;</p> <p> var bblength=bbnode.length;</p> <p> var ans;</p> <p> var ans=list[0].bbnode.length;</p> <p> document.getElementById("crt").innerHTML="oyaノードの数="+oyaLength+"<br>bbノードの数="+bblength+"<br>1つ目のoyaノードの中のbbノードの数="+ans;</p> <p>}</p> <p></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; } }
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; } }
なぜならば『a[0].b』は、
変数「a」が示すオブジェクトに属しているのメンバ「0」、…が示すオブジェクトに属しているメンバ「b」
という意味だからです。
それは単なる変数「b」とは全く関係ない別物です。
大変参考になりました。
ご丁寧な解説をいただきありがとうございます。
よくわかりました。
なぜならば『a[0].b』は、
2014/03/08 03:08:46変数「a」が示すオブジェクトに属しているのメンバ「0」、…が示すオブジェクトに属しているメンバ「b」
という意味だからです。
それは単なる変数「b」とは全く関係ない別物です。
大変参考になりました。
2014/03/08 09:29:43ご丁寧な解説をいただきありがとうございます。
よくわかりました。