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

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

新規登録して質問してみよう
ただいま回答率
85.48%
リストボックス

ユーザーがリストから1つ以上のアイテムを選択できるようにするGUI要素です。

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

5610閲覧

<li>のvalue値をJavaScriptで取得・計算したい

begginer_class

総合スコア14

リストボックス

ユーザーがリストから1つ以上のアイテムを選択できるようにするGUI要素です。

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2020/05/26 12:50

編集2020/05/26 12:52

リストのうちのいずれかをクリックしたときに、valueの値を変数へ代入したいのですが、コンソールを見ると「undefined」となってしまいます。

コードは以下です。

html

1<ul id="price"> 2 <li class="even"><a class="btn" href="#02" name="price" value="300" onclick="price()">300円</a></li> 3 <li class="odd"><a class="btn" href="#02" name="price" value="600" onclick="price()">600円</a></li> 4 <li class="odd"><a class="btn" href="#02" name="price" value="1200" onclick="price()">1200円</a></li> 5</ul> 6

js

1function price() { 2 var out_price = $('price li a').val(); 3 console.log(out_price)? //undefined 4};

以上で問題を特定できますでしょうか。

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

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

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

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

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

takasima20

2020/05/26 12:54

aタグにvalueは指定できんのかな?
miyabi_takatsuk

2020/05/26 13:27

machamoさん、 回答させていただきましたが、 HTMLの役割や仕様、JS構文の動く動かないなど、 もう少し突っ込んで勉強された方がいいかと思います。
guest

回答2

0

ベストアンサー

onclickなんて使わないでjQueryでやればいいとは思いますが、とりあえず動くやつ。

HTML

1<ul id="price"> 2 <li class="even"><a class="btn" href="#02" name="price" data-value="300" onclick="price(this)">300円</a></li> 3 <li class="odd"><a class="btn" href="#02" name="price" data-value="600" onclick="price(this)">600円</a></li> 4 <li class="odd"><a class="btn" href="#02" name="price" data-value="1200" onclick="price(this)">1200円</a></li> 5</ul>

js

1function price(elem) { 2 var out_price = $(elem).data('value'); 3 console.log(out_price); //undefined 4 return false; 5}; 6```**動くサンプル:**[https://jsfiddle.net/a0cLs69t/](https://jsfiddle.net/a0cLs69t/)

投稿2020/05/26 13:13

kei344

総合スコア69407

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

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

begginer_class

2020/05/26 13:28

こちらで望み通りの動きになりました。 本当にありがとうございます。 確かに、jqueryでやればもっと楽だったかもしれません。。
think49

2020/05/26 16:22

…と思いましたが、data-*属性があるので、HTML 4.01を名乗れないですね。
kei344

2020/05/26 16:39

To: think49さん 元のコードを最小手で動かそうとしたコードなので、そもそもの問題については触れていません。(value属性については「質問への追記・修正」で指摘しているので省略しました、name属性については「取得・計算したい」属性値と関係が無かったため見ていません)
begginer_class

2020/05/27 08:36

name属性は、回答いただくまで「取得計算に必要なもの」と思い込んで元々書いていたものでしたので、削除しました。
guest

0

質問の構文では、out_priceで、特定の要素を取得できていないため、
price liでは、liの集まりというか、ID指定のセレクタになってないため、そもそも要素を取得できていない)
valメソッドを持っていないからです。
また、だいたいにおいて、a要素は、value属性を持たないので、動きません。

下記ならば、取得できるかと。

html

1<!-- メソッド実行の引数としてthisを入れる --> 2<ul id="price"> 3  <li class="even"><label onclick="price(this)"><input type="hidden" class="btn" name="price" value="300">300円</label></li> 4  <li class="odd"><label onclick="price(this)"><input type="hidden" class="btn" name="price" value="600">600円</label></li> 5  <li class="odd"><label onclick="price(this)"><input type="hidden" class="btn" name="price" value="1200">1200円</label></li> 6</ul>

javascript

1// 引数から要素を取得すれば、取得できる。 2function price(inputDom) { 3 var out_price = $(inputDom).children('input').val(); 4 console.log(out_price); // "?"が文末は文法違反";"が正しい undefined 5}

投稿2020/05/26 12:59

編集2020/05/26 13:18
miyabi_takatsuk

総合スコア9528

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

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

kei344

2020/05/26 13:05

$(inputDom).val() はvalue属性の無いa要素では値を取れなくないですか?
begginer_class

2020/05/26 13:07

ありがとうございます。 undefinedではなくなったのですが、空白?何も出力されなくなりました。(コンソールに空白が出力される)
miyabi_takatsuk

2020/05/26 13:07

ただ、一応labelで囲いましたが、それだと、テキストの部分をクリックだと、メソッドを実行できないかも・・・。
miyabi_takatsuk

2020/05/26 13:08

machamoさん、回答のコードを修正しましたが、そちらではどうでしょうか?
begginer_class

2020/05/26 13:11

いただいた内容に修正したところ、クリックが効かなくなってしまいました。
kei344

2020/05/26 13:11

To: miyabi_takatsukさん 「下記ならば、取得できるかと。 」も間違っていますよね。表示しない要素のクリックイベントになっていますよ。
miyabi_takatsuk

2020/05/26 13:13

お二方、コメントありがとうございます。 修正行っていきます。
miyabi_takatsuk

2020/05/26 13:18

machamoさんすみません、修正しました!
begginer_class

2020/05/26 13:30

ありがとうございます。 出力されるようになったのですが、アンカーがないために次の画面へ行けないため、元のHTMLのまま実装できたkei344さんの回答をベストアンサーとさせていただきます。 大変勉強になりました。ありがとうございました。
miyabi_takatsuk

2020/05/26 13:34

machamoさん、そのことは、(次の画面に行きたいということ)質問文に書いていただかないとわからないことです。(第三者の回答者は知り得ないので、汲み取り用がない) なので、次質問される時は、その"要件定義"をしっかり記載してください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問