2022のみconsole.logに表示されて2021が表示されません。
let result = JSON.stringify(allobj); にしてJSON.stringifyをまとめても、console.log(JSON.stringify(objA));console.log(JSON.stringify(objB));と分けてもダメでした。
打てる手はすべてやったと思っているのですが、どうすればいいんでしょうか…
<div class="selectbox">
<select name="top">
<option value="">年を選択</option>
<option value="op-a">2021</option>
<option value="op-b">2022</option>
</select>
<select name="op-a">
<option value="">2021グループから選択</option>
<option value="op-a-1">1</option>
<option value="op-a-2">2</option>
<option value="op-a-3">3</option>
<option value="op-a-4">4</option>
<option value="op-a-5">5</option>
<option value="op-a-6">6</option>
<option value="op-a-7">7</option>
<option value="op-a-8">8</option>
<option value="op-a-9">9</option>
<option value="op-a-10">10</option>
<option value="op-a-11">11</option>
<option value="op-a-12">12</option>
</select>
<select name="op-b">
<option value="">2022グループから選択</option>
<option value="op-a-1-1">1</option>
<option value="op-a-1-2">2</option>
<option value="op-a-1-3">3</option>
<option value="op-a-1-4">4</option>
<option value="op-a-1-5">5</option>
<option value="op-a-1-6">6</option>
<option value="op-a-1-7">7</option>
<option value="op-a-1-8">8</option>
<option value="op-a-1-9">9</option>
<option value="op-a-1-10">10</option>
<option value="op-a-1-11">11</option>
<option value="op-a-1-12">12</option>
</select>
<button type="button" id="selectbox-reset">リセット</button>
<style>
.selectbox select:not(select[name=top]) {
display:none;
}
</style>
<script>
window.addEventListener('load', function () {
//onchangeイベントの設定
document.querySelectorAll('.selectbox select').forEach(elm => {
elm.onchange = function () {
let elm2 = document.getElementsByName(this.value)[0];
if (elm2) {
elm.style.display = 'none';
elm2.style.display = 'block';
}
}
});
//リセットボタン
document.getElementById('selectbox-reset').onclick = function () {
document.querySelectorAll('.selectbox select').forEach(elm => {
if (elm.name == 'top') {
elm.style.display = 'block';
} else {
elm.style.display = 'none';
}
elm.selectedIndex = 0;
});
};
});
//オブジェクトを定義するvarは受け取る際にエラーが起きそう再宣言のできるletを選択
let objA = {
// プロパティを定義
// キー: 値
year: "2021",
month: "1,2,3,4,5,6,7,8,9,10,11,12",
};
let objB = {
// プロパティを定義
// キー: 値
year: "2022",
month: "1,2,3,4,5,6,7,8,9,10,11,12",
};
//オブジェクトをまとめる
let allobj = Object.assign(objA, objB);
//JSON.stringifyとは、JavaScriptのオブジェクトや値などのデータをJSONに変換するための関数
let result = JSON.stringify(objA,objB);
//変数「result」に代入
console.log(result);
</script>
No.2ベストアンサー
- 回答日時:
No1です。
>2021と2022で別々にJSON化する必要があります。
JSONとしか書いてないので、どのような構造にしたいのかがさっぱりわかりません。
JSONになってさえいれば良いのであれば、No1に例示しておきました。
(無視なさっているみたいですが・・)
他の構造にしたければ、そのような構造になるようにすれば良い話です。
回答ありがとうございます。
無視したコメントをしてしまい申し訳ありません。オブジェクトを、JSON文字列に変換するために、「JSON.stringify(person)」と指定し、変数「result」に代入しておく必要があるため少し違う形になりました。
下記コードに致しました。
let result = JSON.stringify([objA,objB]);
console.log(result);
No.1
- 回答日時:
こんばんは
console出力の話だけで良いものと解釈しました。
(他は見ていません)
どうやら、メソッドの内容を勘違いなさっているものと思います。
Object.assign は複数のオブジェクトを統合するのものです。
直後に、
console.log ( 'objA=', objA);
console.log ( 'objB=', objB);
とでもしてみれば、どうなっているかがわかるのではないかと思います。
https://developer.mozilla.org/ja/docs/Web/JavaSc …
まずは
// let allobj = Object.assign(objA, objB);
をコメントアウトしてみてください。その上で、
JSON.stringify() の第二引数は replacer で、文字列化する対象を制限するものです。
https://developer.mozilla.org/ja/docs/Web/JavaSc …
両方のオブジェクトをまとめて、stringify したいのなら、
JSON.stringify([objA,objB])
とか。
とは言え、コンソールに出力するだけならJSON化する必要もないので、
console.log(objA, objB);
でも十分かと思います。
回答ありがとうございます。
先に前提をお話ししますと、2段階式プルダウンを作成しています。
年月を指定して該当の記事を表示させる機能です。
archive.php(アーカイブページ)に配列を渡してSQLで該当ファイルを出力して表示させたいです。
Javascriptから直接配列を渡せないため、JSONでオブジェクトを文字にシリアライズしたいです。
オブジェクトをまとめて、stringify するコードを組んでしまいましたが、
2021と2022で別々にJSON化する必要があります。
下記のようにしたら表示されるんですが、変数「result」に代入しておく必要があるため困っております。
//オブジェクトを定義するvarは受け取る際にエラーが起きそう再宣言のできるletを選択
let objA = {
// プロパティを定義
// キー: 値
year: "2021",
month: "1,2,3,4,5,6,7,8,9,10,11,12",
};
let objB = {
// プロパティを定義
// キー: 値
year: "2022",
month: "1,2,3,4,5,6,7,8,9,10,11,12",
};
//JSON.stringifyとは、JavaScriptのオブジェクトや値などのデータをJSONに変換するための関数
console.log(JSON.stringify(objA));console.log(JSON.stringify(objB));
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript JavascriptからSQLへ繋ぎ方が分からない 3 2022/07/07 00:27
- JavaScript 2段階プルダウンで1段階目の選択を終えた後に選択ボックスを見えなくしたい 2 2022/07/05 21:58
- JavaScript 以前の質問だと、どの条件でも配列が表示されてしまいます。 1 2022/07/09 11:40
- JavaScript セレクトボックスを2つ選択してメッセージなどを表示するには。~運賃検索プログラムを完成させたい~ 1 2022/07/22 11:10
- JavaScript セレクトボックスで配列を呼び出したい。 1 2022/07/08 20:14
- JavaScript 電車の運賃を出すプログラムを作っています。 2 2022/06/22 09:36
- JavaScript 中百舌鳥駅と深井駅を入れ替えて選択しても同じ挙動にしたいです。 2 2022/06/24 18:45
- JavaScript 1度きりではなく、繰り返し、挙動が変わるようにしていただきたいです。 1 2022/07/03 15:50
- JavaScript プログラムがうまく動きませんレビューお願いします 1 2022/07/10 05:08
- JavaScript セレクトを全て選択されていないと、文字によるエラーメッセージを表示させるコードを調べています 2 2023/06/22 15:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
<input>の選択肢をプルダウンメ...
-
全てのselect要素をデフォルト...
-
【javascript】連想配列からセ...
-
javascriptでセレクトボックス...
-
セレクトボックスで配列を呼び...
-
select要素のvalueを配列で取得...
-
selectを使った計算
-
リストボックス内の重複したも...
-
プルダウン選択を変更すると、...
-
連動プルダウンのclonenode
-
セレクトボタンで特定の項目で...
-
プルダウンメニューに連動する...
-
【急募】選択した物件と施設の...
-
プルダウンの値をphpファイルへ...
-
2段階プルダウンで1段階目の選...
-
select+submit部分をonclikでsu...
-
セレクトボックスの組み合わせ...
-
WebBrowserを使ってプルダウン...
-
Selectボックスの一覧表示方法
-
Javascriptでフォームのセレク...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プルダウン選択を変更すると、...
-
全てのselect要素をデフォルト...
-
【JS】selectでchangeした時の...
-
javascriptでセレクトボックス...
-
Selectボックスの一覧表示方法
-
複数のプルダウンを1つにまとめ...
-
コードレビューをお願いします。
-
JavaScriptで<select>の<option...
-
<input>の選択肢をプルダウンメ...
-
select要素のvalueを配列で取得...
-
selectを変更不可にしたい
-
VBScriptでHTMLのセレクトボッ...
-
ラジオボタンとプルダウンを連...
-
javascriptで合計金額を算出し...
-
中百舌鳥駅と深井駅を入れ替え...
-
同じ名前のセレクトがある場合...
-
セレクトボックスで配列を呼び...
-
今日の日付を自動的にセレクト...
-
プルダウンの値によって活性・...
-
サイト内の物件を複数の検索条...
おすすめ情報