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

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

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

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

2回答

1485閲覧

再帰を用いた文字列の変換

arsro

総合スコア24

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2015/12/07 15:54

再帰を利用して、HTMLのテキスト(タグで仕切られた範囲)を全て”[num]”に切り替えるプログラムを作りたいのですが、
Javascriptが初めてなのもありまして、なかなか目標を達成することができません。
例えば、

Html

1入力 2<a>はじめまして</a> 3<a>h_chicKerです</a> 4<a>よろしくお願いします。</a> 5 6=> 7出力 8<a>NUM:1</a> 9<a>NUM:2</a> 10<a>NUM:3</a>

のようにしたいです。
変換するHTMLの例は
https://teratail.com
のトップページとします。
再帰の雛形は作ってみました。

Javascript

1 <script type="text/javascript"> 2 3 function changeStr(element) { 4 5 if (element == null) { 6 var element = document.body; 7 } 8 if (element.childNodes.length > 0) { 9 changeColor(element.firstChild); 10 } 11 if (element.nodeType == 1) { 12 //ここに処理を書く? 13 } 14 } 15 16 </script>

なにかありましたら、随時補足させていただきます。
よろしくお願いします。

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

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

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

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

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

guest

回答2

0

HTMLのテキスト(タグで仕切られた範囲)を全て”[num]”に切り替えるプログラムを作りたい

その条件ですと、結果は次のようになります。

HTML

1入力 2<a>はじめまして</a> 3<a>h_chicKerです</a> 4<a>よろしくお願いします。</a> 5 6出力 7<a>NUM:1</a>NUM:2<a>NUM:3</a>NUM:4<a>NUM:5</a>

「置換する条件」と「期待する結果」に相違があるようですので
アルゴリズムを見直したほうがよいように思います。
a要素直下のテキストノード置換を求めるなら document.getElementsByTagName('a') でも良いですね。

Re: score 5 さん

投稿2015/12/07 22:59

think49

総合スコア18162

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

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

0

プログラミング言語はロジックの表現/実現手段でしかないため、Javascript が初めてだからできない。というのは理由としては如何なものかと?ロジックの整理なり、組み立て能力なり、知識と活用方法が噛み合っていないだけでしょう。様々な言語で色んなプログラムを書くと良いですよ。

とは言え、再帰処理は慣れるまで難しい概念だと私は感じます。以下にひな形を書いていますので、参考にしてみてください。これがズバリの答えではありません。

function _(e) { if (null == e) { // 引数が省略されている場合には document.body を無条件で指定する _(document.body); return; } if (0 < e.childNodes.length) { // childNodes を持つ場合は走査して再帰処理する for (var i=0; i<e.childNodes.length; i++) _(e.childNodes[i]); } console.log(e); // [TODO] 条件に一致する要素に対して処理を実施する ([num] に置き換える etc...) }

上記のロジックであれば、指定された要素を含めた全要素を走査するため『テキストを全て "[num]" に置き換える』という条件を(この部分の仕様が曖昧ですので)ご自身で調整すればよろしいかと思います。全体に適用するという意味では、それ以外のパターンにも応用は効くと思います。

投稿2015/12/07 17:43

ps13zier

総合スコア433

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問