アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセルでマクロを組んで作成したものを、Javascriptを使用してhtaアプリケーションに作り替えたいと思っています。

フォーム1のテキストボックスに任意の英数字混在の文字列(たとえば10桁)を入れ、同フォームのボタンを押すとフォーム2が開き、フォーム1で入力した文字列を一文字ずつ分解して表示、分解された個々の文字に対応する文字列をそれぞれ表示させたいのです。

フォーム2は、分解された文字列(一文字)- 文字に対応する文字列 という構成で、フォーム1に入力した文字が10桁であれば上記の構成で10行表示させるようにしたいです。

文字を分解するところから詰まってしまいすすみません。
お分かりになるかた、ヒントでも構いませんので教えていただけませでしょうか。
足りない情報がありましたら、随時追記いたしますので、よろしくお願いいたします。

質問者からの補足コメント

  • Ogre7077 さん 簡略化したものを教えていただいて、大変感謝しております!
    本当はとっても助かったのでお二方にベストアンサーさせていただきたいのですが、
    今回は二度もお手数をおかけした、siffon9 さんをベストアンサーとさせていただきたいと思います。
    お二方とも本当にありがとうございました。

      補足日時:2015/06/29 20:43

A 回答 (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>";
}
    • good
    • 0
この回答へのお礼

動作確認しました!自分の作成したいものができました。
Javascriptは自分にとっては難しいですが楽しいですね。
教えていただいたものは自分のものにして少しずつスキルの幅を広げていきたいです。
初心者ゆえ拙い説明でお手数をおかけしてしまいましたが、本当にありがとうございました。

お礼日時:2015/06/29 20:40

フォーム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>
    • good
    • 0
この回答へのお礼

ありがとうございます。こちらもHtaで作成して動作確認いたしました。
いろいろな書き方があって難しいですね。
作成したツールはそのまま使うだけではなく、1つずつコードを分解して意味を勉強し、自分で構築できるようにしていきたいとおもいます。
ご教授ありがとうございました!

お礼日時:2015/06/29 20:40

こんなですか?


--- 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>
--------------
    • good
    • 0
この回答へのお礼

ありがとうございます!動作を確認しました。
すみません、もう一つお伺いしたいのですが、教えていただいたコードの場合、フォーム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-にんじん

となります。

最初にこのようにお聞きすればよかったのですが、知識が足らず申し訳ありません。

初心者に近いのですが、これを機に教えていただいたコードから勉強していきたいので、もう一度お力添えいただければ幸いです。
よろしくお願いします。

お礼日時:2015/06/28 14:12

var a="あいうabc";


var b=a.split("");
で、b[0]に"あ"、b[1]に"い"、、、、b[5]に"c"が入ります。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!