Google
SSブログ

html 要素に情報を持たせたくなって・・ [公開アプリ]

01_img.jpg

@sakashushu です。

Parllet(個人で作成・公開しているアルファ版のWeb家計簿)の、4/28 にポストした改修案 に沿ってのブログラミング(ブログを書きながらプログラミング)は、 5/3

2.金額が0の時も、最低限の高さを持たせて文字が見えるようにする。

まで終わらせたという状態です。

昨日

今ちょっと、自分自身の読みにくいソースを追っかけつつ、方向性を思案しています

と書きましたが、今回はちょっと ブログラミング とはいかずとも、思案している中で調べたりしたこととか、書いてみたいと思います。

 

スポンサードリンク

 

 

■ ざっくり環境

OS:Windows 7 Home Premium
Play Flamework:1.2.4
ブラウザ:IE 11.0
Github公開リポジトリ のCommitバージョン(スタート時点): こちら

 

 

■ ふわ~っと現状

4/28 の改修案 で次に取り組むのは

3.1.と2.によって金額0でも高さを確保された真ん中部分のセルも、左右端部分と同じようにクリックでメニューが出るようにする。

です。

左右端部分は細かく言うと名称金額に分かれていて、どちらをクリックしても同じメニューが表示されます。

02_current_menu_01.jpg

03_current_menu_02.jpg

 

この時 Parllet/app/views/DailyAccount/balanceTable.html 内では、以下のように

//残高明細(口座系)へジャンプする際の絞込項目セット
jQuery('#hDebitDateFr').val(jQuery('.ToDlDebitDateFr', jQuery(this).parent("li")).val());

そのセルに紐づくデータにアクセスするのに、

親要素(li)を辿ってその子要素の .ToDlDebitDateFr の値を取得してセット

して、名称金額のメニューを一致させていたりもします。

 

今回は親要素の異なる真ん中部分のセルでも同じメニューを出す必要があるため、同じ手法は使えません。

幸い真ん中部分や、左右端部分との繋ぎのSVG部分の表示処理を作った際に、 Parllet/app/views/DailyAccount/balanceTable.html 内の以下のように

%{vCnt = 0}%
#{list items:lWDA_R, as:'lwdar'}
    var clsLwda = new ClsLwda(
            "${lwdar.sItem}",
            ${lwdar.lstWdtd[0].lAmount},
            "${lwdar.strTypeNm}",
            ${lwdar.bolInvFlg},
            0);
    aryLwdar[${vCnt}] = clsLwda;
    intDivBtStkdRealSumAmnt += Math.abs(${lwdar.lstWdtd[0].lAmount});
    %{vCnt++}%
    
    #{if lwdar.sItem!=HANDLING_TYPE_CASH && lwdar.lstWdtd[0].lAmount==0}
        %{intHdlgZeroExist = true}%
    #{/if}
#{/list}

データの配列の枠は作ってあるので、真ん中部分のセルにインデックスだけ持たせれば、必要なデータを取得する処理は作れそうです。

という流れで、「html 要素に情報を持たせたく」なったということなのです。

 

今回はブログラミングではないですが、いつものように体当たりで調査していきます。

 

 

■ 体当たり開始

「html 要素に情報を持たせる」で検索!

HTML5では「data-*="value"」の形式で属性名にプライベートな値を設定できるカスタムデータ属性の仕様と、そのカスタムデータ属性にJavaScriptからアクセスするAPIが定義されました。
でも実はJavaScriptだけではなく、jQueryはもちろんCSSからでもアクセスすることができるのです。

(中略)

1. HTML5 カスタムデータ属性「data-*="value"」とは

カスタムデータ属性には、既存の要素や属性に適切なものがなかった場合に、独自のデータを属性に格納することで、より意味を持たせる意図があります。全てのHTML要素に対し、複数設定することができます。

data-*="value"

<p data-web="blog" data-blog-author="Rochas">Dress Cording</p>


(中略)

9. [jQuery] attr()でカスタムデータ属性にアクセスする方法

.attr('data-name')

.attr('data-name','value')

attr()でカスタムデータ属性の値を取得する場合は、引数はキャメルケースに変換せず、そのまま「data-」を含めた文字列を'data-type-str'のように指定します。また第2引数を指定した場合には属性値を保存します。

<div id='cat' data-name='Tama' data-cat-breed='persian'>ペルシャ猫のたま</div>

<script>
// attr()でカスタムデータ属性の値を取得
$('#cat').attr('data-name'); // Tama

// attr()でカスタムデータ属性の値を設定
$('#cat').attr('data-cat-breed','himalayan'); // ヒマラヤンに変身
</script>



via: HTML5 カスタムデータ属性「data-*」にJavaScript、jQueryからアクセスする方法 | Dress Cording

 

なるほど、目的が「インデックスを持たせる」だけだともったいないぐらいの機能ですが、今後のためにもこの手法を取り入れておくと良さそうです。

ということで、

3.1.と2.によって金額0でも高さを確保された真ん中部分のセルも、左右端部分と同じようにクリックでメニューが出るようにする。

を実現するためのブログラミングの際には「data-*="value"」を設定しつつ進めていくことになると思います。

 

 

今回は調査だけですが、以上です!

お疲れ様でした!

 


 

いつも最後まで読んでいただいてありがとうございますm(_ _)m

何度も見に来ていただけることが、間違いなく私の原動力となっています(^_^)

 

メール:
sakashushu@parllet.com

ツイッター:
https://twitter.com/sakashushu

フェイスブック:
https://www.facebook.com/shuichi.sakamoto.90

 

ご連絡・フォロー・友達申請 等、いつでもお気軽にどうぞ!

またお越しくださいませませ!

 


nice!(1)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 1

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

トラックバックの受付は締め切りました

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。