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

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

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

foreachは、List・Collection・Arrayといったデータ構造の各要素に対して繰り返し処理を実行するために扱われる、制御構造の構文です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

1回答

1060閲覧

phpのview内でforeachで出力したvalueをjQueryで取得したい

liledevi

総合スコア1

foreach

foreachは、List・Collection・Arrayといったデータ構造の各要素に対して繰り返し処理を実行するために扱われる、制御構造の構文です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2021/06/02 06:26

select_item_list配列に、アイテム名、単価、個数が格納されています。
追加ボタンで項目を増やせるようにしているのでjQueryでそれぞれの小計の計算したいです。

一旦、それぞれの単価と個数を取得して計算→投げるといった感じにしたかったのですが、valueの取得すらできなかったので教えていただきたいです。

php

1<?php foreach ($this->data['select_item_list'] as $key => $value) : ?> 2<div class="row form-group" id="select_div"> 3 <div class="col"> 4 <input type="text" class="form-control" id="item_name" name="item_name[]" list="item_name_list" value="<?php echo $value['name']; ?>" required> 5 <div class="col"> 6 <input type="text" class="form-control" id="price" name="price[]" placeholder="単価" value="<?php echo $value['price']; ?>" required> 7 </div> 8 <div class="col"> 9 <input type="text" class="form-control" id="quantity" name="quantity[]" placeholder="個数" value="<?php echo $value['quantity']; ?>" required> 10 </div> 11 <div class="col"> 12 ここに小計を出したい 13 </div> 14</div> 15<?php endforeach; ?> 16 17<span id='plus_item_area'></span> 18<button type="button" id="item_list_plus" class="btn">追加</button>

追加ボタン

jquery

1$('#item_list_plus').on('click', function() { 2 tag = '長いので略'; 3 $('#plus_item_area').append(tag); 4});

とりあえずpriceだけでもvalueをしたかったがundefinedとなってしまいました。

jquery

1$(document).ready( function(){ 2 var price = []; 3 price = $('#select_div').children().children('input[name="price"]').val(); 4 console.log(price); 5});

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

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

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

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

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

yambejp

2021/06/02 06:52

$this->dataの例示がないので再現できません
liledevi

2021/06/02 07:03

学習始めたてで質問の仕方が悪くすみません。 例示とはどういうことでしょうか? 配列の中身でしたらこんなかんじになります。よろしくお願いします。 array (size=6) 0 => array (size=8) 'estimate_item_id' => string '236' (length=3) 'item_name' => string '商品1' (length=21) 'price' => string '5000' (length=5) 'quantity' => string '1' (length=1) 1 => array (size=8) 'item_id' => string '237' (length=3) 'item_name' => string '商品2' (length=21) 'price' => string '3000' (length=4) 'quantity' => string '1' (length=1)
yambejp

2021/06/02 07:08

ご提示のサンプルだと dataはselect_item_listをキーとする要素をもっていないので無理です
liledevi

2021/06/02 07:33

わかりました!
FKM

2021/06/02 08:12

document.readyってどっちに記述しています?headタグ内だとDOMが生成されていないので、値は何も入ってこないはずです。
liledevi

2021/06/02 08:30

headタグ内には書いていません! 試しに配列ではないvalueをconsole.log()してみたら表示できたので、場所は間違ってないかと思います。
guest

回答1

0

ベストアンサー

id名select-div直下にある子孫要素は

<div class="col"> <input type="text" class="form-control" id="item_name" name="item_name[]" list="item_name_list" value="<?php echo $value['name']; ?>" required>

で、childrenメソッドは直下にある子要素を取得してしまいます(つまり、上の子孫要素を探そうとして、nameプロパティが違うのでundefinedとなっている)ので、この場合は子孫要素を自在に探索できるfindメソッドで探しましょう。childrenメソッドが有効なケースはリストやプルダウンといった並列した要素が並んでいる場合なので、このような階層化したフォームの場合はあまり向いていません。

js

1$(document).ready( function(){ 2 var price = []; 3 price = $('#select_div').find("input[name=price]").val(); 4 console.log(price); 5});

投稿2021/06/02 09:04

編集2021/06/02 10:19
FKM

総合スコア3640

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

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

liledevi

2021/06/02 09:48

回答ありがとうございます! こちらの書き方で実行してみたら、undefinedとなってしまいました。 ですが、 price = $('#select_div').children().find('#price').val(); このようにしたらループの1つめの値だけは取得できました!
FKM

2021/06/02 10:21

childrenを省略しても大丈夫なはず。findは子孫を探索できるので。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問