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

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

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

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

Q&A

解決済

1回答

11692閲覧

javascriptで "replace is not a function" と出る

退会済みユーザー

退会済みユーザー

総合スコア0

JavaScript

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

2グッド

2クリップ

投稿2017/12/16 06:43

編集2017/12/16 06:47

#目的
javascriptで全角英数字を半角英数字に変換するアプリを作ろうとしています.
replaceメソッドを使って全角文字を半角文字に変換しようとしているのですが,"replace is not a function"とエラーが出てしまいます.

なぜこのようなエラーが出てしまうのか,また解決方法を教えていただきたいです.
よろしくお願いいたします.

#エラーメッセージ
Uncaught TypeError: text.replace is not a function
at HTMLButtonElement.<anonymous> (main.js:6)
(anonymous) @ main.js:6
#ソース

html

1<!DOCTYPE html> 2<html> 3 <head> 4 <meta charset="utf-8"> 5 <title>全角数字 -> 半角数字</title> 6 <link rel="stylesheet" href="styles.css"> 7 </head> 8 <body> 9 全角英数字を半角英数字に直します 10 <table> 11 <tr> 12 <td><textarea id="text" rows="30" cols="80" placeholder="ここにテキストを入力"></textarea></td> 13 <td>>>></td> 14 <td><textarea id="result" rows="30" cols="80" placeholder="結果が表示されます"></textarea></td> 15 </tr> 16 </table> 17 <button type="button" id="btn">実行</button> 18 <script src="main.js"></script> 19 </body> 20</html>

javascript

1(function () { 2 'use strict'; 3 4 document.getElementById('btn').addEventListener('click', function(){ 5 document.getElementById('text').value; 6 text.replace(/[A-Za-z0-9]/g, function(s) { 7 return String.fromCharCode(s.charCodeAt(0) - 65248); 8 }); 9 document.getElementById('result').value += text; 10 }); 11 12})();
Kawboy442, hagana👍を押しています

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

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

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

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

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

guest

回答1

0

ベストアンサー

以下のようにすることで質問者さんが実現したいことが行えると思いますが、いかがでしょうか?

HTML

1<!DOCTYPE html> 2<html> 3<head> 4 <meta charset="utf-8"> 5 <title>全角数字 -> 半角数字</title> 6 <link rel="stylesheet" href="styles.css"> 7</head> 8<body> 9全角英数字を半角英数字に直します 10<table> 11 <tr> 12 <td><textarea id="text" rows="30" cols="80" placeholder="ここにテキストを入力"></textarea></td> 13 <td>>>></td> 14 <td><textarea id="result" rows="30" cols="80" placeholder="結果が表示されます"></textarea></td> 15 </tr> 16</table> 17<button type="button" id="btn">実行</button> 18<script> 19 (function () { 20 'use strict'; 21 22 document.getElementById('btn').addEventListener('click', function () { 23 var text = document.getElementById('text').value; 24 text = text.replace(/[A-Za-z0-9]/g, function (s) { 25 return String.fromCharCode(s.charCodeAt(0) - 65248); 26 }); 27 document.getElementById('result').value += text; 28 }); 29 30 })(); 31</script> 32</body> 33</html>

投稿2017/12/16 06:52

s8_chu

総合スコア14731

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

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

退会済みユーザー

退会済みユーザー

2017/12/16 06:59

ありがとうございます,できました. しかし,なぜ成功したのかが知りたいです.私の方法は何が間違っていたのでしょうか?
s8_chu

2017/12/16 07:09 編集

以下の2点かと思います。 - 変数textにtextareaの値を設定する必要があったのにしていなかった - replaceメソッドは、 設定した正規表現にマッチした文字列を置換した文字列を返すもので、変数textの値が変化するわけではないため、何かしらの変数に結果を入れて扱う必要があったがそうしていなかった
退会済みユーザー

退会済みユーザー

2017/12/16 07:18

ありがとうございます.理解できました.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問