質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

782閲覧

HTMLのリストにjavascriptで追加したいんですが、わかりません。

asahinon

総合スコア6

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

2クリップ

投稿2019/12/16 01:24

イメージ説明

動き
・オレンジプラス
→学校の中にある1限や3限などの項目を追加することができる。
→オレンジプラスボタンを押すとテキストボックス、カラーピッカー、追加ボタンの3つを表示・非表示できる。(デフォルトは非表示状態)

・ピンクプラス
→学校やプライベートなどの黒丸の項目を追加することができる。

したいこと
・ピンクプラスで追加ボタンを押した際にオレンジプラスボタンも一緒に追加されるようにしたい。

HTML

1 <script type="text/javascript" src="list.js"></script> 2 <!--リストの作成--> 3 <ul> 4 <li> 5 <label contentEditable="true">学校<input type="checkbox" onchange="clickBtn2(this.checked)" style="display: none;" checked></label> 6 <div id="school"> 7 <ul id="FavList"></ul> 8 <input type="text" id="favtext" style="display:none;"> 9 <input type="color" id="choicecolor" style="display:none;"> 10 <input type="button" id="addurl" value="追加" onclick="bar();" style="display:none;"> 11 <label> 12 <img src="プラスオレンジ.png"> 13 <input type="checkbox" style="display: none;" onchange="clickBtn1(this.checked)"> 14 </label> 15 </div> 16 </li> 17 </ul> 18 19 <ul id="pinkList"></ul> 20 <ul> 21 <input type="text" id="plustext" style="display:none;"> 22 <input type="button" id="oookkk" value="追加" onclick="bar2();" style="display:none;"> 23 <label> 24 <img src="プラスピンク.png"> 25 <input type="checkbox" style="display: none;" onchange="clickBtn3(this.checked)"> 26 </label> 27 </ul> 28 29 </div>

javascript

1//↓リストの追加オレンジ 2function bar() { 3 // a 要素の作成と属性の指定 4 var newAnchor = document.createElement("a"); 5 var newTxt = document.createTextNode( document.getElementById("favtext").value ); 6 newAnchor.appendChild( newTxt ); 7 8 // li 要素の作成 9 var newLi = document.createElement("li"); 10 newLi.appendChild ( newAnchor ); 11 newLi.style.color = document.getElementById('choicecolor').value; //色適応 12 document.getElementById('FavList').contentEditable = true; //リストの編集 13 14 // リストに追加 15 var list = document.getElementById("FavList"); 16 list.appendChild( newLi ); 17} 18 19//↓オレンジボタン表示非表示 20//初期表示は非表示 21function clickBtn1(){ 22 const favtext = document.getElementById("favtext"); 23 const addurl = document.getElementById("addurl"); 24 const choicecolor = document.getElementById("choicecolor"); 25 26 if(favtext.style.display=="block"){ 27 // noneで非表示 28 favtext.style.display ="none"; 29 }else{ 30 // blockで表示 31 favtext.style.display ="block"; 32 } 33 34 if(addurl.style.display=="block"){ 35 // noneで非表示 36 addurl.style.display ="none"; 37 }else{ 38 // blockで表示 39 addurl.style.display ="block"; 40 } 41 42 if(choicecolor.style.display=="block"){ 43 // noneで非表示 44 choicecolor.style.display ="none"; 45 }else{ 46 // blockで表示 47 choicecolor.style.display ="block"; 48 } 49} 50 51 52//↓親要素表示非表示 53function clickBtn2(){ 54 const school = document.getElementById("school"); 55 56 if(school.style.display=="block"){ 57 // noneで非表示 58 school.style.display ="none"; 59 }else{ 60 // blockで表示 61 school.style.display ="block"; 62 } 63} 64 65//↓ピンクボタン表示非表示 66//初期表示は非表示 67function clickBtn3(){ 68 const plustext = document.getElementById("plustext"); 69 const oookkk = document.getElementById("oookkk"); 70 71 if(plustext.style.display=="block"){ 72 // noneで非表示 73 plustext.style.display ="none"; 74 }else{ 75 // blockで表示 76 plustext.style.display ="block"; 77 } 78 79 if(oookkk.style.display=="block"){ 80 // noneで非表示 81 oookkk.style.display ="none"; 82 }else{ 83 // blockで表示 84 oookkk.style.display ="block"; 85 } 86} 87 88//↓リストの追加ピンク 89function bar2() { 90 // a 要素の作成と属性の指定 91 var newAnchor = document.createElement("a"); 92 var newTxt = document.createTextNode( document.getElementById("plustext").value ); 93 newAnchor.appendChild( newTxt ); 94 95 // ul 要素の作成 96 var newLi = document.createElement("li"); 97 newLi.appendChild ( newAnchor ); 98 99 // リストに追加 100 var list = document.getElementById("pinkList"); 101 list.appendChild( newLi ); 102} 103

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

azuapricot

2019/12/16 02:56

「ピンクプラスで追加ボタンを押した際にオレンジプラスボタンも一緒に追加されるようにしたい。」 これの仰ってる意味が良く分かりません。 一緒に何を追加したいんですか? テキストボックスの内容ですか?
asahinon

2019/12/16 03:20

ピンクプラスの追加ボタンでは黒丸の項目しか増やすことができないので、学校部分にある1限、3限などの入力した項目を増やせるようにオレンジプラスボタン(テキストボックス、カラーピッカー、追加ボタンの3つデフォルトである非表示の状態)を黒丸の項目と一緒に追加できるようにしたいです。わかりづらくてすみません…
azuapricot

2019/12/16 04:08

「オレンジ+ボタンを黒丸の項目と一緒に追加できるようにしたい」 やっぱり仰ってる意味がよくわからないのですが、やりたいことを図示していただけませんか? 回答が得られないということは質問内容が悪くて回答者が理解できずに諦めていることがほとんどです。
azuapricot

2019/12/16 04:11

ピンク側の追加ボタンに機能を追加したいということですか? ピンク側の追加ボタン押下 ↓ ピンク側のテキストボックスの入力内容を下部リストに反映 & オレンジ側のテキストボックスの入力内容があれば上部リストに反映 こういうことでしょうか?
guest

回答1

0

ベストアンサー

まず念頭においてほしいのが id は重複できないということです。何度も追加するものには id を使わず class にしておきます。
要素自体は作れると思うので省略しますが、増えてくると面倒になるので template 要素を使ったほうがいいでしょう。IE も対応しなければならないなら非表示の要素を使うとかしてください。
https://developer.mozilla.org/ja/docs/Web/HTML/Element/template

JavaScript

1 var newLi = document.getElementById('newlist').content.cloneNode(true).querySelector('*'); 2 newLi.querySelector('label').insertAdjacentText('afterbegin', document.getElementById('plustext').value); 3 newLi.querySelector('[name="orange"]').addEventListener('click', clickBtn1, false); 4 newLi.querySelector('.addurl').addEventListener('click', bar, false); 5 list.appendChild(newLi);

イベント処理も id ではなく、イベントオブジェクトから要素をたどるようにします。

JavaScript

1function clickBtn1(event) { 2 const li = event.target.closest('li'); // not IE 3/* 4 const favtext = document.getElementById("favtext"); 5 const addurl = document.getElementById("addurl"); 6 const choicecolor = document.getElementById("choicecolor"); 7*/ 8 const favtext = li.querySelector(".favtext"); 9 const addurl = li.querySelector(".addurl"); 10 const choicecolor = li.querySelector(".choicecolor");

https://developer.mozilla.org/ja/docs/Web/API/Event/target

投稿2019/12/18 06:47

x_x

総合スコア13749

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問