お世話になります。
現在、パソコンスクールでJavaScriptの勉強をしています。
スクールで使っているテキストは以下の通りです。
確かな力が身につくJavaScript「超」入門
https://bit.ly/2FoZ1GK
このテキストのセクション3-10(P133、P134)に
配列型の変数のプロパティをすべて出力するコードの説明があり、
※下の段、配列型の変数のサンプル3-10の通りです
こちらは問題ないのですが、次のセクションの3-11(P143)に
オブジェクト型の変数のプロパティを全て取得する方法が以下のように記載されています。
for (var p in jsbook) {
console.log(p + '=' + jsbook[p]); }
このコードを利用して配列型と同様に、全てのプロパティをhtmlページ上に
出力するコードを使って自分なり作ってみました。
ですがコンソールには出力できるのですが、
htmlのページ上に出力する方法がわかりませんでした。
スクールで先生に質問してみたところ、
「配列型と同じ方法でappendChildを利用するとhtml上に出力することが出来る」
とのお話でした。
ですが、自宅に帰ってコードを比較してみたところ、配列型の方は
以下の特徴があるため、forを使った条件式を利用してタグの子要素として出力できます。
1)lengthプロパティを利用してプロパティの個数(=最後のインデックス番号)が取得できる
2)インデックス番号は「0」から始まる整数で最終の番号もlengthプロパティ把握できている
ですが、オブジェクト型の方はセクションの3-11(P143)のコードで
すべてのプロパティが出力されるようですが、プロパティの個数がわかりません。
おまけに、オブジェクト型では連想配列名でヒモ付けされているため、
配列型のようにforを使った条件式で整数の値を順番に入力していくような方法が
使えません。
手作業でプロパティを展開し取得するのではなく、
本当にオブジェクト型もセクションの3-11(P143)のコードを利用して
全てのプロパティを出力することが出来るのでしょうか?
↓セクションの3-11(P143)のコード
for (var p in jsbook) {
console.log(p + '=' + jsbook[p]); }
すいませんが、詳しい方、説明の上手な方、
もし、オブジェクト型のコードも例文のコードを利用して、
手作業でプロパティを展開することなく、
全てのプロパティを取得し、Htmlのページ上に出力する方法があるのでしたら、
動作するコードを教えて下さい。
※出来ない場合、できない理由も教えて頂ければうれしいです。
お手数ですが、よろしくお願いします。
配列型とオブジェクト型のサンプルコードは以下の通りです。
配列型の変数のサンプル3-10
<script>
var todo = ['デザインカンプ作成', 'データ整理', '勉強会申し込み', '牛乳買う'];
for (var i = 0; i < todo.length; i++) {
var li = document.createElement('li');
document.getElementById('list').appendChild(li);
}
//「todo」の中のlengthプロパティを使って個数を数えている
console.log(todo.length);
</script>
html側
<section>
<h1>やることリスト</h1>
<ul id="list">
</ul>
</section>
オブジェクト型の変数のサンプル3-11-自作
<script>
var jsbook = { title: 'JavaScript入門', price: 2500, stock: 3};
for (var p in jsbook) {
document.getElementById('AAA').textContent = (p + '=' + jsbook[p]);
//コンソールは全部出る
console.log(p + '=' + jsbook[p]);
}
</script>
html側
<section>
<br>3-10の子要素を使う方法は左辺の表記が違うのでわからない。<br>
<article id="AAA">コンソールは全部出る。
</article>
</section>
追記
テキストのページ数やチャプターが記載されていますが、
こちらで見やすくするためだけのものです。
特に意味はありません。
No.2ベストアンサー
- 回答日時:
<!DOCTYPE html>
<meta charset="UTF-8">
<html lang="ja">
<title>?</title>
<style>
</style>
<body>
<section>
<h1>やることリスト</h1>
<ul id="list">
</ul>
<hr>
<ul id="list2">
</ul>
</section>
<script>
var jsbook = { title: 'JavaScript入門', price: 2500, stock: 3};
var target = document.getElementById('list');
for (var p in jsbook) {
if (jsbook.hasOwnProperty (p)) {
var li = document.createElement('li');
li.textContent = (p + '=' + jsbook[p]);
target.appendChild (li);
}
}
//--
let t2 = document.getElementById('list2');
Object.entries (jsbook)
.map (a => new Text (a.join ('=')))
.forEach (t => t2.appendChild (document.createElement('li')).appendChild (t));
</script>
ご解答頂きありがとうございます。
配列型の方は以下の通りで良いのですが、
document.getElementById('list').appendChild(li);
オブジェクト型の場合は、こんなのが必要なんですね。
target.appendChild (li);
以下のところまでやってみたのですが、
全く表示されないので、出来ないのだと思っていました。
for (var p in jsbook) {
var li = document.createElement('li');
li.textContent = (p + '=' + jsbook[p]);
// target.appendChild (li);
>
let t2 = document.getElementById('list2');
~
の方は何をやっているのか今の私では全くわからないです(笑)。
今回は解答して頂きありがとうございます。
機会がありましたら、またお願いします。
※質問はしばらく開けておきます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) vba 等間隔の列に対しての計算 6 2022/05/17 20:15
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript EasyUIのSubGrid(jquery)におけるObjectに入れた連想配列について 1 2022/05/02 11:21
- PHP 配列の値の更新方法について 1 2022/08/05 09:49
- Visual Basic(VBA) ActiveReportのdetailをデータセットの自動バインドを使って帳票を出力しています。 1 2023/08/16 07:16
- IT・エンジニアリング ActiveReportのdetailをデータセットの自動バインドを使って帳票を出力しています。 1 2023/08/16 07:17
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- C言語・C++・C# C言語初心者 ポインタについて、お助けください、、 2 2023/03/15 23:50
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
二次元配列を使って順位をだす...
-
同じIDで定義した要素の配列を...
-
C#テキストボックスの文字を配...
-
undefinedを表示させない方法は...
-
WSH(Jscript)でファイル一覧
-
配列を作って総当たりで距離を...
-
2つの文字列を比較する方法
-
[JS] setAttributeで保存される...
-
window.openでタイトル名の指定
-
javascript 特定のタグのidの存...
-
今日の月と日付の1週間後や3日...
-
idを使わずにonclickで自身の要...
-
ページ内に複数表がある場合のT...
-
GASでGoogleフォームの自動返信...
-
任意の座標をクリックさせるには
-
functionから別のfunctionを実...
-
javascriptで指定した日時にリ...
-
VB6における事前バインディング...
-
javascriptであるボタンを押す...
-
google apps scriptの終了のさせ方
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
二次元配列を使って順位をだす...
-
C#テキストボックスの文字を配...
-
同じIDで定義した要素の配列を...
-
jspからjavascriptの変数引継ぎ
-
javascript 変数名の連結をしたい
-
React hooksが値を返して配列変...
-
undefinedを表示させない方法は...
-
javascriptで行を抽出したいです。
-
二次元配列の全要素の全要素を...
-
JavaScriptにおける[] とか :...
-
JavaScriptでの動的な多次元配...
-
順列生成アルゴリズムについて...
-
WSH(Jscript)でファイル一覧
-
JavaScriptからPHPに配列を渡す...
-
javascriptからphpに配列データ...
-
多次元配列から最大値を1行また...
-
textareaに入力されたデータを...
-
どうすればresponseText結果を...
-
フォーム入力値の重複チェック
-
オブジェクトから任意のプロパ...
おすすめ情報