エクセルでマクロを組んで作成したものを、Javascriptを使用してhtaアプリケーションに作り替えたいと思っています。
フォーム1のテキストボックスに任意の英数字混在の文字列(たとえば10桁)を入れ、同フォームのボタンを押すとフォーム2が開き、フォーム1で入力した文字列を一文字ずつ分解して表示、分解された個々の文字に対応する文字列をそれぞれ表示させたいのです。
フォーム2は、分解された文字列(一文字)- 文字に対応する文字列 という構成で、フォーム1に入力した文字が10桁であれば上記の構成で10行表示させるようにしたいです。
文字を分解するところから詰まってしまいすすみません。
お分かりになるかた、ヒントでも構いませんので教えていただけませでしょうか。
足りない情報がありましたら、随時追記いたしますので、よろしくお願いいたします。
No.4ベストアンサー
- 回答日時:
No.2です。
ご質問をよく読んでおらずに失礼しました。
既に回答がついておりますが、textsを配列ではなく連想配列として処理すれば良いです。
No.2を以下の様に修正してください。
form1.hta
変更前 var texts = ["One","Two","Three"];
変更後 var texts = {"1":"にんじん","2":"じゃがいも","3":"キャベツ","A":"りんご","B":"ぶどう","C":"みかん"};
form2.htaのfor(){}を以下に置き換え
for(var i = 0, c; i < inputText.length; i++){
c = inputText.charAt(i)
v += c + " - " + texts[c] + "<br>";
}
動作確認しました!自分の作成したいものができました。
Javascriptは自分にとっては難しいですが楽しいですね。
教えていただいたものは自分のものにして少しずつスキルの幅を広げていきたいです。
初心者ゆえ拙い説明でお手数をおかけしてしまいましたが、本当にありがとうございました。
No.3
- 回答日時:
フォーム2 を少々手抜き
<!DOCTYPE html><html lang=ja><title>Javascript で可能でしょうか</title><hta:application></hta:application>
<script>(function(){window.onload=function(){
var map = { 'a': 'alpha', 'b':'bravo', 'c':'charlie', '-':'hyphen', '1':'un', '2':'deux', '3':'troi'};
var form = document.forms['eine'];
form.onsubmit = function(){
var x = [], m = form.elements['s'].value, s = m.length;
for (var i=0; i<s; i++) { var c = m.charAt(i); if (typeof map[c]!=='undefined') x.push( c + ' - ' + map[c] ) }
var r = x.join('\n');
window.alert(r); // 簡単にポップアップ
// document.forms['zwei'].elements['o'].value = r; // 同一画面に表示
return false;
};
}})()</script>
<form name=eine><input type=text name=s value=abc-123><button type=submit>分解</button></form>
<form name=zwei><textarea name=o></textarea></form>
ありがとうございます。こちらもHtaで作成して動作確認いたしました。
いろいろな書き方があって難しいですね。
作成したツールはそのまま使うだけではなく、1つずつコードを分解して意味を勉強し、自分で構築できるようにしていきたいとおもいます。
ご教授ありがとうございました!
No.2
- 回答日時:
こんなですか?
--- form1.hta ---
<html>
<head>
<title>フォーム1</title>
<script type="text/javascript">
var texts = ["One","Two","Three"];
function openForm2(){
var ret;
ret = showModalDialog("form2.hta",this,'dialogWidth:480px,dialogHeight:120px');
}
</script>
</head>
<body>
<form>
<input type="text" id="src" value="123"><br>
<input type="button" onclick='openForm2()' value="フォーム2を開く">
</form>
</body>
</html>
--------------
--- form2.hta ---
<html>
<head>
<title>フォーム2</title>
<script type="text/javascript">
function closeForm2(){
returnValue = "";
this.close();
}
window.onload=function(){
var opener = window.dialogArguments;
var v = "";
var inputText = opener.document.getElementById("src").value;
var texts = opener.texts;
for(var i = 0; i < inputText.length; i++){
v += inputText.charAt(i) + " - " + texts[i] + "<br>";
}
document.getElementById("display").innerHTML = v;
}
</script>
</head>
<body>
<div id="display">ここに表示</div>
<button onclick="closeForm2()">閉じる</button>
</body>
</html>
--------------
ありがとうございます!動作を確認しました。
すみません、もう一つお伺いしたいのですが、教えていただいたコードの場合、フォーム1に、var texts = ["One","Two","Three"]; とありますが、
たとえば、入力された文字が[a]なら[りんご]、[b]なら[ぶどう]と文字によって表示させる項目が変わる場合は、どのように記述すると良いでしょうか。
フォーム1のテキストボックスには、20桁程度の半角アルファベット(A~Z)と半角数字(0~9)が組み合わさった任意の文字列が入ります。
A~Z、0~9 にはそれぞれ対応した項目(りんごやぶどうなど)があり、フォーム2で文字を分割して、尚且つ分割した文字に対応する項目を横に
表示させる感じです。
フォーム1に[A1B2C3・・・]と入力した場合は、
A-りんご
1-にんじん
B-ぶどう
2-じゃがいも
C-みかん
3-キャベツ
となり、
[C3B2A1・・・]と入力した場合は
C-みかん
3-キャベツ
B-ぶどう
2-じゃがいも
A-りんご
1-にんじん
となります。
最初にこのようにお聞きすればよかったのですが、知識が足らず申し訳ありません。
初心者に近いのですが、これを機に教えていただいたコードから勉強していきたいので、もう一度お力添えいただければ幸いです。
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
- Access(アクセス) capeofdragonと申します。 Access2016を使っております。 あるフォームがあり、テ 2 2022/09/09 13:18
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- gooブログ Twitterの動画画面をgooブログに埋め込めない 4 2022/06/03 16:40
- Java Javaの問題なのですが、「3文字以上の英数字文字列を入力し、文字列の中に文字(9)が出てくるまでの 1 2023/06/06 18:55
- その他(プログラミング・Web制作) プログラミング pythonの問題について 2 2022/04/19 00:41
- JavaScript 空白で入力フォームのボタンをクリックしたら、ブラウザの上部からjavascriptで 表示されるアラ 1 2022/05/20 11:16
- Visual Basic(VBA) エクセルVBAについて 2 2023/01/31 16:21
- Excel(エクセル) capeofdragonと申します Excel2016を使っておりまして 半角又は全角の任意文字列が 2 2022/10/31 13:51
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
google apps scriptの終了のさせ方
-
javaScriptのコードの修正をお...
-
C#OpenCv V4にのエラーに関する...
-
GASでGoogleフォームの自動返信...
-
ASP.NET MVCでObjectをjsに渡す
-
javascriptでiframeのURL変更は?
-
JavaScriptでテーブル内?に矢...
-
「続きを読む」ボタンを押すと...
-
メールフォームの日付入力フォ...
-
ASP.NETのコントロールの値をJa...
-
javascriptで指定した日時にリ...
-
jqGridについて
-
Strutsで半角英数字1文字以上
-
javascriptでテーブルに追加し...
-
ジェネレーターの作り方
-
明日・明後日・明々後日
-
自分のwebページにtwitterのつ...
-
C# 演算 奇数と偶数 表現の仕方
-
IE8で種類が一致しませんとエラ...
-
JavaScript でのリアルタイム時...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
google apps scriptの終了のさせ方
-
C#OpenCv V4にのエラーに関する...
-
メールフォームの日付入力フォ...
-
GASでundefinedエラーが出ます
-
ジェネレーターの作り方
-
GASでGoogleフォームの自動返信...
-
なぜmatchメソッドがエラーにな...
-
翌月を取得するGASが分かりません
-
ローカルにあるファイルを検索...
-
HTMLで作った時報アプリが動き...
-
ASP.NETのコントロールの値をJa...
-
C# 演算 奇数と偶数 表現の仕方
-
html javascript リンク先アド...
-
gas スプレッドシートがアクテ...
-
javascriptでテーブルに追加し...
-
VSCODE[Python]の設定について
-
JavaScriptで決まった「時刻」...
-
ASP.NET MVCでObjectをjsに渡す
-
イベントが初めの一回しか起き...
-
jqGridについて
おすすめ情報
Ogre7077 さん 簡略化したものを教えていただいて、大変感謝しております!
本当はとっても助かったのでお二方にベストアンサーさせていただきたいのですが、
今回は二度もお手数をおかけした、siffon9 さんをベストアンサーとさせていただきたいと思います。
お二方とも本当にありがとうございました。