javascriptでdivの中身を下記のように仕組みを作りたいのですが、思うようにできません。
どなたかご教示のほどよろしくお願い致します。
【HTML内に書く内容】
<article id="textbox">
<p>このエリアにHTML要素を追加する</p>
</article>
【javascriptでやりたいこと】
・上記<p>の中身に<div>要素を入れて<p>を複数作成したいです
・<p>の数は状況に応じて自由に数を調整したいです
勉強しはじめな為、質問内容が不十分でしたら申し訳ございません。
よろしくお願い致します。
A 回答 (7件)
- 最新から表示
- 回答順に表示
No.7
- 回答日時:
#5
このサイトhttpから始まる文字が勝手にリンクに変わっちゃうので
ダメですね
以下、ttpをコピー後httpに書き換えてためしてください
<script>
window.addEventListener('DOMContentLoaded', ()=>{
const texts = [
{"tag":"a","param":{"href":"ttps://www.yahoo.co.jp/","target":"blank","textContent":"yahooのリンク"}},
{"tag":"a","param":{"href":"ttps://www.goo.ne.jp/","target":"blank","textContent":"gooのリンク"}},
{"tag":"a","param":{"href":"ttps://www.amazon.co.jp/","target":"blank","textContent":"amazonのリンク"}},
];
const textbox = document.querySelector('#textbox');
textbox.innerHTML = '';
texts.forEach(x=>{
const p=document.createElement('p');
p.appendChild(Object.assign(document.createElement(x.tag),x.param));
textbox.appendChild(p);
});
});
</script>
<article id="textbox">
<p>このエリアにHTML要素を追加する</p>
</article>
yambejp様
改めて、いただいた内容で無事リンクが効きました。
ご教示いただきましてどうもありがとうございました。
大変勉強になりました。
またお世話になることがありましたらよろしくお願い致します。
No.6
- 回答日時:
#5
あーなるほど、行き違いがあったようですみません。
ようやく理解しました。
textsはDOM用にいじってよいのですよね?であればこんな感じで
<script>
window.addEventListener('DOMContentLoaded', ()=>{
const texts = [
{"tag":"a","param":{"href":"https://www.yahoo.co.jp/","target":"blank","text …のリンク"}},
{"tag":"a","param":{"href":"https://www.goo.ne.jp/","target":"blank","text": …のリンク"}},
{"tag":"a","param":{"href":"https://www.amazon.co.jp/","target":"blank","tex …のリンク"}},
];
const textbox = document.querySelector('#textbox');
textbox.innerHTML = '';
texts.forEach(x=>{
const p=document.createElement('p');
p.appendChild(Object.assign(document.createElement(x.tag),x.param));
textbox.appendChild(p);
});
});
</script>
<article id="textbox">
<p>このエリアにHTML要素を追加する</p>
</article>
yambejp様
ありがとうございます。
今テストしてみたのですが、HTML側に書いた文字(<p>このエリアにHTML要素を追加する</p>)が、中身が3つのリンクに書き換わらず、そのまま「このエリアにHTML要素を追加する」と表示がされてしまいます。
ちなみに、リンク2番目の
{"tag":"a","param":{"href":"https://www.goo.ne.jp/","target":"blank","text": …のリンク"}},
最後の部分の
"text": …のリンク"
が、他と見比べているうちに、「": 」が多いのかなと思い
"text …のリンク"
としてテストしてみましたが、これでも書き換わりませんでした。
申し訳ございませんが、再度ご教示いただけますでしょうか。
よろしくお願い致します。
No.5
- 回答日時:
> #4
いや、そういうことではありません。
#1のお礼欄にaタグを使いたいということなので#3を提示しました。
#4のお礼欄を見てもaタグを作るための要素hrefやテキストなどが
記載されてないので、例えばtexts 配列でどういうデータを渡して
どういう結果がほしいのかを書いてほしい・・・ということです
yambejp様
失礼致しました。
テキストの部分に実際には会社のHP内のページリンクをつけるのですが、
こちらでは例としてリンクを3つ入れました。
よろしくお願い致します。
<script>
// 追加したいテキストはここに入力
let texts = [
'<a href="https://www.yahoo.co.jp/" target="_blank">yahooのリンク</a>',
'<a href="https://www.goo.ne.jp/" target="_blank">gooのリンク</a>',
'<a href="https://www.amazon.co.jp/" target="_blank">amazonのリンク</a>'
];
let textbox = document.getElementById('textbox');
textbox.innerHTML = ''; // もともとの子要素を消す
let div = document.createElement('div');
let p = [];
for(let i = 0,len = texts.length;i<len;i++){
p[i] = document.createElement('p'); // p要素を作る
p[i].textContent = texts[i]; // テキストを代入
div.appendChild(p[i]); // pをdivに追加
}
textbox.appendChild(div); // divをarticleに追加
</script>
<article id="textbox">
<p>このエリアにHTML要素を追加する</p>
</article>
No.4
- 回答日時:
#3
> 一緒に書けばよろしいのでしょうか?
仕様をもう一度まとめて補足をつけてください
私のコードは単品でコピペすれば動作するはずです
yambejp様
補足の文字数をオーバーします為こちらに失礼致します。
下記のようにテキストを複数作成できる仕様でのDOM処理の仕方をご教示願います。
お手数をお掛けいたしますがよろしくお願い致します。
<script>
// 追加したいテキストはここに入力
let texts = [
'テキスト1',
'テキスト2',
'テキスト3'
];
let textbox = document.getElementById('textbox');
textbox.innerHTML = ''; // もともとの子要素を消す
let div = document.createElement('div');
let p = [];
for(let i = 0,len = texts.length;i<len;i++){
p[i] = document.createElement('p'); // p要素を作る
p[i].textContent = texts[i]; // テキストを代入
div.appendChild(p[i]); // pをdivに追加
}
textbox.appendChild(div); // divをarticleに追加
</script>
<article id="textbox">
<p>このエリアにHTML要素を追加する</p>
</article>
No.3
- 回答日時:
> アンカーリンクを設定したい場合
以下のようにDOMで処理してください
<script>
window.addEventListener('DOMContentLoaded', function(e){
let a=Object.assign(document.createElement('a'),{href:"#test",textContent:"test"});
document.querySelector('#textbox p').appendChild(a);
});
</script>
<article id="textbox">
<p>このエリアにHTML要素を追加する</p>
</article>
yambejp様
ご回答いただきありがとうございます。
いただいた内容の<script>部分をNo1の回答者様の<script>と一緒に書けばよろしいのでしょうか?
No.2
- 回答日時:
No1です。
>テキストを入れるところにアンカーリンクを設定したい場合、
>アンカーリンク部分<a href="~~~~">テキスト</a>が見えてしまう
この場合は、テキストを代入するところで、
textContentを、innerHTMLに変えると動きます。
が、わたしも詳しくはないのですが、
innerHTMLによる代入は、
使い方によってはセキュリティ上の問題が発生するそうです。
どのような場面でこの仕組みを使われるのか分かりませんが、
使うときは、何が代入されうるのか、
確認して使ってください。
「innerHTML セキュリティ」などで検索されると、
いくつか事例が出てくるようです。
sukitaro様
ご教示いただいた方法にて解決致しました。
セキュリティ上の問題もあるとのこと承知致しました。
勉強になります。
使用するのは会社の環境で、ある管理画面の機能で賄えない部分の対応としてご質問させていただきました。
会社の件でもありますので、セキュリティを注意して参考とさせていただきます。
早急なご回答をどうもありがとうございました。
No.1
- 回答日時:
おそらくですが、
articleの中にdivを入れて、
そのdivの中にpを複数入れる
ということで良いでしょうか。
<script>
// 追加したいテキストはここに入力
let texts = [
'テキスト1',
'テキスト2',
'テキスト3'
];
let textbox = document.getElementById('textbox');
textbox.innerHTML = ''; // もともとの子要素を消す
let div = document.createElement('div');
let p = [];
for(let i = 0,len = texts.length;i<len;i++){
p[i] = document.createElement('p'); // p要素を作る
p[i].textContent = texts[i]; // テキストを代入
div.appendChild(p[i]); // pをdivに追加
}
textbox.appendChild(div); // divをarticleに追加
</script>
sukitaro様
早速のご回答をありがとうございます。
まさにやりたかった内容です!
1点、テキストを入れるところにアンカーリンクを設定したい場合、
アンカーリンク部分<a href="~~~~">テキスト</a>が見えてしまうのですが、この場合はどのようにすればよろしいでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
- JavaScript javascriptで移動ボタンを押した際に遷移するボタンを追記したい 1 2022/11/29 03:02
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- JavaScript 読み込んだQRコードをフォームに受け渡したい 1 2023/05/18 11:18
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- JavaScript javascriptで変数を組み込みたい 2 2023/01/13 09:52
- JavaScript セレクトボックスを2つ設けて選択して初めてメッセを表示 1 2022/07/27 12:15
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
<div>のタッチ状態を維持したま...
-
フォームが空欄の時にフォーム...
-
プラグイン無しでContactform7...
-
変数名をどのようにつけるのが...
-
階層別の組織図の自動作成について
-
条件に該当した時のみ定数を宣...
-
2段階プルダウンで1段階目の選...
-
読み込んだQRコードをフォーム...
-
初心者です。gulpでコンパイル...
-
正規表現について質問です。条...
-
jQueryでシンセサイザーを作っ...
-
メールフォームの日付入力フォ...
-
二次元配列を使って順位をだす...
-
二次元配列の中の各行の要素を...
-
出発駅A、到着駅Bを選択すると...
-
スマホ上で、左右スワイプで次...
-
【Google Apps Script】「ライ...
-
jQueryで同じクラス名のものを...
-
①入力フォーム→②確認表示画面→③...
-
プログラムについて。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
直近のアクセスページの履歴を...
-
DOMで追加した要素が「前に戻る...
-
鑑定や占いみたいなものを作り...
-
htmlとCSSでできる仕事
-
javaエラーで、開けない
-
2つのAjaxベースのjavascriptが...
-
javascriptのみで作成されたス...
-
どのサイトもjavascriptは使わ...
-
wordpress などのcmsの普及によ...
-
javascript入門 超簡単
-
formのselect要素を一覧から選...
-
javascriptでサイト内検索でき...
-
JSPの処理の途中で、JavaScript...
-
VB.NET2003 テキストボックスに...
-
JavaScriptで ブラウザの閉じる...
-
「終了していない文字列型の定...
-
gas 全角数字を半角数字に変換
-
if(1){...}とはどういうことで...
-
正整数の半角数字かどうか判定する
-
htmlのfileタグに自動で値を入...
おすすめ情報
yambejp様
ご回答いただきありがとうございます。
いただいた内容の<script>部分をNo1の回答者様の<script>と一緒に書けばよろしいのでしょうか?
yambejp様
ありがとうございます。
明日の朝出社しましたらすぐに試してみます。
またご報告させていただきます。