いいね!数

0

閲覧数
135

複数値のリストボックスの値をcsjsで取得する方法がわかりません。

以下の式を書きました。

var selected = dojo.byId("#{id:categoryDoc3}");
var str=selected.value;

上記だと、strの値は選択した値の一つ目の値しか取得できていません。

どのような式でリストボックス(categoryDoc3)の複数値を取得できるでしょうか?

不足している情報等がありましたらお知らせください。

サーバー情報: | クライアント情報: | 
カテゴリ:アプリ開発 - XPages | タグ:
  | 質問日時:Mar 20, 2018, 12:49:00 PM

回答・コメント

いいね!数

0

http://blog.livedoor.jp/morituri/archives/54013170.html

ここに書いてある内容でできると思います。

回答日時:Mar 20, 2018, 5:34:35 PM

いいね!数

0

どえむむさん、回答ありがとうございます。

頂いたURLを参考に以下の式をつくってみたのですが、

2つ項目を選択しているはずが、①の結果が46のようになってしまって

選択した項目数になりません。何か間違っているでしょうか??

var del = "/n";
var sel = document.getElementById("#{id:categoryDoc3}");
var arr = [];
var arr2 = [];
alert(sel.length);   *****①
  // 選択値を配列に追加
for (var i = 0; i < sel.length; i++) {
  str=sel[i].value;
  var str_num =str.indexOf('(');
  var str_numall=str.length;
  var strName=str.slice(0,str_num);
  var strCode = str.slice(str_num+1,str_numall-1);
    if (sel[i].selected) { 
    arr.push(strName);
    arr2.push(strCode)}
  }  
  
--省略---

回答日時:Mar 22, 2018, 11:50:41 AM

いいね!数

0

ちゃんと読んでますか?

 

> OPTION要素の要素数はSELECT要素の直下にあるlengthプロパティに保存されているので、
 

と書いてありますよね?

回答日時:Mar 22, 2018, 1:50:34 PM

いいね!数

0

以下の式のうち、categoryDoc3がリストボックスとなっております。

これでsel.lengthで要素数が取れると思ったのですが、勘違いしておりますでしょうか?

また、alert( document.getElementById("#{id:categoryDoc3}")[0])とやると、以下のような

結果がでます。

 

var del = "/n";
var sel = document.getElementById("#{id:categoryDoc3}");
var arr = [];
var arr2 = [];
alert(sel.length);   *****①
  // 選択値を配列に追加
for (var i = 0; i < sel.length; i++) {
  str=sel[i].value;
  var str_num =str.indexOf('(');
  var str_numall=str.length;
  var strName=str.slice(0,str_num);
  var strCode = str.slice(str_num+1,str_numall-1);
    if (sel[i].selected) { 
    arr.push(strName);
    arr2.push(strCode)}
  }  
  
--省略---

 

なにか根本的にわかってないところがあるのかもしれません、ご指摘頂ければ助かります。

よろしくお願い致します。

回答日時:Mar 22, 2018, 2:08:33 PM

いいね!数

0

ひとつ前のコメントでは

「選択した項目数になりません。何か間違っているでしょうか??」

と書いてありますが、

今度は

「これでsel.lengthで要素数が取れると思ったのですが、勘違いしておりますでしょうか?」

と書いてあります。

どちらを取得したいのでしょうか?

 

sel.lengthはリストボックスの要素数を表しています。

その要素数分、ループして選択されている値を求めます。

sel[i].selectedがtrue

であれば、その項目は選択されているということになります。

 

理解できていないのであれば、いきなり実際のコードを書くのではなく、

サンプルを作って、自分が理解できたら次のサンプルを作るようにしましょう。

 

ちなみに、最初のコメントに書いてあるコードを実行してみましたが、できましたよ。

現時点で、何ができていて、何ができていないのかをはっきりさせてください。

 

回答日時:Mar 22, 2018, 2:56:03 PM

いいね!数

0

お騒がせしました。

以下のコートでやりたことが実現できました。

 

var sel = document.getElementById("#{id:categoryDoc3}");
var sel_count = 0
var input = document.getElementById("#{id:FabCode_1}");
var input2 = document.getElementById("#{id:FabName_1}");
var arr = [];
var arr2 = [];
var str
  // 選択値を配列に追加
  for (var i = 0; i < sel.length; i++) {
   if(sel[i].selected){ sel_count++;
   
  str=sel[i].text;
  var str_num =str.indexOf('(');
  var str_numall=str.length;
  var strName=str.slice(0,str_num);
  var strCode = str.slice(str_num+1,str_numall-1);
   arr.push(strName);
   arr2.push(strCode);

---省略---

回答日時:Mar 22, 2018, 3:10:16 PM