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

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

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

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

JavaScript

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

Q&A

解決済

1回答

2991閲覧

htmlの文書中のjavascriptの適用範囲を限定したい。

home01

総合スコア7

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

JavaScript

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

0グッド

0クリップ

投稿2017/04/08 16:17

###javascriptの適用範囲について
javascriptでapiをもちいて、英単語をしゃべらせたい

###発生している問題
当方、このようなコードをwordpressのテキスト編集モードで入れたのですが、結果的には「sample word one」をクリックしても、「sample word two」と発音してしまいます。初心者なりに、これが起こる問題はたぶん[var]のjavascriptの変数定義の仕様だと思います。このように英単語を何百も言わせたいとき、varの変数が自動的にかわってくれない、(例えばC言語の場合は変数は上から読み込まれてだんだん更新されていきますよね。)javascriptの仕様は不都合だと思います。

例えば、javascriptの要素取得や変数の範囲を文章中で限定するような方法はありますでしょうか?(例えば要素取得でも文書の一番最初から読み込まれますので、textの要素を取得しようと思っても一番上のクラスやタグが取得されてしまいます。ex)document.querySelectorなど

<input style="display: none; "class="text" value="sample word one"/> <a href="" onclick="speak(); return false;">sample word one</a> <script> function speak(){ var speech = new SpeechSynthesisUtterance("sample word one"); speech.voiceURI = 'Google US English'; speech.lang = 'en-US'; speechSynthesis.speak(speech); } </script> <input style="display: none; "class="text" value="sample word two"/> <a href="" onclick="speak(); return false;">sample word two</a> <script> function speak(){ var speech = new SpeechSynthesisUtterance("sample word two"); speech.voiceURI = 'Google US English'; speech.lang = 'en-US'; speechSynthesis.speak(speech); } </script>

###補足
とにかく、wordpressの固定ページにおいて、javascriptに「この部分を全文章とみなせばいいんだな」という風に指定させることができませんか……?(初心者なのであいまいな質問ですいません。)

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

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

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

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

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

guest

回答1

0

ベストアンサー

HTML

1<input style="display: none; "class="text" value="sample word one"/> 2<a href="" onclick="speak1(); return false;">sample word one</a> 3<script> 4function speak1(){ 5 var speech = new SpeechSynthesisUtterance("sample word one"); 6 speech.voiceURI = 'Google US English'; 7 speech.lang = 'en-US'; 8 speechSynthesis.speak(speech); 9} 10</script> 11<input style="display: none; "class="text" value="sample word two"/> 12<a href="" onclick="speak2(); return false;">sample word two</a> 13<script> 14function speak2(){ 15 var speech = new SpeechSynthesisUtterance("sample word two"); 16 speech.voiceURI = 'Google US English'; 17 speech.lang = 'en-US'; 18 speechSynthesis.speak(speech); 19} 20</script>

querySelector でなく querySelectorAll でも使えば1番目以外もアクセス出来ますよ。

【document.querySelectorAll - Web API インターフェイス | MDN】
https://developer.mozilla.org/ja/docs/Web/API/Document/querySelectorAll

投稿2017/04/08 16:23

kei344

総合スコア69400

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

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

home01

2017/04/09 02:32

ありがとうございます。 関数の名前がかぶっていたらダメなのですね! javascriptって難しいです(>_<)
kei344

2017/04/09 02:43

「関数の名前がかぶっていたらダメ」は多くの言語がそうですよ。 <script></script> で複数に分けているつもりかもしれませんが、同一ページ内は同じスコープになるため、重複できません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問