Chartjsを使用したRails(4.2.6)フィットネスアプリケーションでJavaScriptのトラブルシューティングが必要です。私は、三項演算子(if)演算子を使っていくつかの変数を設定しようとすると、予期しない動作をしています。テスト目的のために条件文が偽である場合、Javascriptコードはtrueと評価されます。&& true
// f = female, m = male; first = first measurement of year; last = last measurement of year
var sex_female = "<%= @member.sex == 'Female' %>";
var sex_male = "<%= @member.sex == 'Male' %>";
var normal_body_fat_first_f;
var normal_body_fat_last_f;
var normal_body_fat_first_m;
var normal_body_fat_last_m;
normal_body_fat_first_f = sex_female && body_fat_year_first <= 24.0 ? body_fat_year_first : 24.0;
normal_body_fat_last_f = sex_female && body_fat_year_last <= 24.0 ? body_fat_year_last : 24.0;
normal_body_fat_first_m = sex_male && body_fat_year_first <= 17.0 ? body_fat_year_first : 17.0;
normal_body_fat_last_m = sex_male && body_fat_year_last <= 17.0 ? body_fat_year_last : 17.0;
、私は次の体脂肪データを持つ男性ユーザーでログイン:ここ
body_fat_year_first = 15.2
body_fat_year_last = 21.9
は、Firefoxのコンソールからの結果は以下のとおりです。
> sex_female
"false"
> sex_male
"true"
> normal_body_fat_first_f
"15.2"
> normal_body_fat_last_f
"21.9"
normal_body_fat_first_m
"15.2"
normal_body_fat_last_m
"17"
> body_fat_year_first <=24
true
> body_fat_year_first <= 17.0
true
> sex_female && body_fat_year_first <= 24.0
true
> sex_female && body_fat_year_last <= 24.0
true
> sex_male && body_fat_year_first <= 17.0
true
> sex_male && body_fat_year_last <= 17.0
false
sex_femaleがあると評価された場合"false" & & body_fat_year_first < = 24は真であると評価し、なぜ偽ではないのですか& &真偽が偽と評価されていますか?
私の最初の考えは、sex_femaleが文字列なので、その文が真と評価される理由です。これをテストするために、私はこのようなブール値に文字列を変換してみました:
var sex_female = "<%= @member.sex == 'Female'%>" == "true";
var sex_male = "<%= @member.sex == 'Male'%>" == "true";
ただし、その変更は、問題を解決しませんでした:「sex_male」文が評価されることはありません。
私は間違っていますか?男性がログインしたとき、 'sex_female'部分に遭遇し、式全体を偽と評価すると、& &演算子が「短絡」しないのはなぜですか?
なぜこれが起こっているのか、問題の解決方法を教えていただきありがとうございます。ありがとう!
@Homa問題のif文がある:
この問題を解決する必要があります割り当ての前後に引用符を削除しますか?返信ありがとうございます。 – Timo