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

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

新規登録して質問してみよう
ただいま回答率
85.49%
iteratorパターン

iteratorパターンとは、オブジェクト指向プログラミングのデザインパターンです。コンテナオブジェクトの要素を列挙する手段を独立させることによって、コンテナの内部仕様に依存しない反復子を提供することを目的とします。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

JavaScript

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

Q&A

解決済

2回答

4798閲覧

JavaScript内でイテレーターを使用したいです。

yadrop

総合スコア57

iteratorパターン

iteratorパターンとは、オブジェクト指向プログラミングのデザインパターンです。コンテナオブジェクトの要素を列挙する手段を独立させることによって、コンテナの内部仕様に依存しない反復子を提供することを目的とします。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

JavaScript

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

0グッド

0クリップ

投稿2016/02/22 07:13

編集2016/02/23 06:08

JavaScript内でイテレーターを使用したいのですが、記述の仕方を知りたいです。
下記のような感じにしたいです、

<%= s:iterator value=itemList status="st">
<div class="productWrapper" shouhinCd="<s:property value="shouhinCd" />">

~~~
<s:iterator %>
イメージとしてはアイテムリストを回して、商品のIDを表示するような感じです。。

上記の書き方で試してみたのですが、<s:iterator>の部分がそのまま文字列として出力されてしまいました。
また、<s:property>内の値もコードにならずエラーとなってしまいました。

値をそのまま出力するなら<%= ~ %>とやっていたのですが、リストの中の値を指定するにはどうしたらいいのでしょうか。

何卒、宜しくお願いします。

-------- 追記 ----------

テンプレートが以下になります。
この中で、商品リストを回しながらshouhin_cdとcolor_cdを使用したいです。

◆product_result.js var tmpl_product_result = '\ <div class="productWrapper">\ <div class="productImage">\ <a href="/Products/<%= shouhin_cd %>/<%= color_cd %>/?from_search=1">\ <img class="angle_change_target"\ num1="<%= image_url_01 %>"\ num2="<%= image_url_02 %>"\ num3="<%= image_url_03 %>"\ src="<%= image_url %>"\ alt="<%= shouhin_cd %>-<%= iro_cd %>" />\ </a>\ </div>\ </div>';

下記が読み込んでいるファイルのようで、処理後にhtmlを返却しているようです。

◆search.js document.write('<script src="templates/product_result.js" type="text/javascript"></script>'); var refresh = function(products){ var tmpl_result = _.template(tmpl_product_result); var html = ""; _.each(products,function(num){ html += tmpl_result(num); }); return html; };

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

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

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

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

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

guest

回答2

0

ベストアンサー

Javascript を別ファイルにするのであれば無理です。
JSPに書いてもいいのであれば、普通に使えると思います。

<script type="text/javascript"> function foo() { var template = <% s:iterator value=itemList status="st"> <div class='productWrapper' shouhinCd='<s:property value="shouhinCd" />' /> </s:iterator> %> } </script>

どうしても、Javascript をjsファイルにしたければ、
・JSP側で s:iteratorを使って描画する
・描画した部分は display:none にして隠しておく
・js側で描画部分を取得し、templateとして使う
なども考えられます。

投稿2016/02/22 14:30

編集2016/02/22 14:34
root_jp

総合スコア4666

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

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

0

これはJavascriptではなく、JSPの書き方を聞いているのですね?
だとすると、質問についているタグがおかしくなるので、JSPに修正していただけたらと思います。

%=は不要です。
<%= ~%>になると、値を表示するだけになってしまいます。
Iteratorタグを使用するなら、

JSP

1(例) 2<s:iterator value="days"> 3 <p>day is: <s:property/></p> 4</s:iterator>

このように書きます。

参考:
5.<%= ~ %>:値の表示(expression)
Struts2‎ > ‎タグ開発者ガイド‎ > ‎Struts タグ‎ > ‎汎用タグ‎ > ‎汎用タグリファレンス‎ > ‎iterator

投稿2016/02/22 07:52

編集2016/02/22 07:58
kaputaros

総合スコア1844

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

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

yadrop

2016/02/22 08:00 編集

ご回答いただきありがとうございます! そして説明不足で申し訳ありません。 表示するのはJSPなんですが、そのJSPに表示する用としてJSファイルにてテンプレートを作成しているようなのです。 template.js var template = '\ <div~~~\ ~~~~~\   /div>'; 上記のようなソースでした。 このテンプレートの結果をJSPに反映させているようで、ここのJS内でリストを回したいのですが。。。
yadrop

2016/02/22 08:00

文章訂正
sonor_3rd

2016/02/22 08:05

>JSPに表示する用としてJSファイルにてテンプレートを作成 何かしら、フレームワーク等を利用されているのでしょうか。
yadrop

2016/02/22 08:44

把握しきれてはいないのですが、画面の非同期処理が終わる際のリフレッシュなどで用いているようです。 自分もこれは要らないのではと思うのですが そこを参照している機能が多々あり、 今自分が担当している機能のために仕様を変更できないという事情です。。
kaputaros

2016/02/22 13:53 編集

jspはJavascriptより先に実行されるので、普通ならムリですが、非同期でリロードするなら使用することは可能だと思います。 なんだか、node.jsみたいですね。 jsファイルを読み込んでいる部分やテンプレート内などを記載してもらう事は可能ですか?
yadrop

2016/02/23 06:07

質問欄に追記として記載したので、ご確認いただけたら幸いです!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問