2016-07-21 12 views
2

javascript変数の名前としてhtml data-attributeを登録することはできますか? data属性をターゲットにするhtml "data-"属性をjavacript変数

<form> 
    <input data-varName="test1" /> 
    <input data-varName="test2" /> 
</form> 

$('form').find('input').each(function() { 
    var $(this).attr('data-varName') = $(this).val(); 
}); 
+0

Rel:http://stackoverflow.com/questions/5117127/use-dynamic-variable-names-in-javascript – SEUH

答えて

1

一つのオプションは、オブジェクトであなたの変数を格納して、変数に値を割り当てるには、オブジェクトの表記を使用することです:

平野JavaScriptで
<form> 
    <input data-varName="test1" /> 
    <input data-varName="test2" /> 
</form> 

var allVariables = {}; 

$('form input').each(function(){ 
    allVariables[ $(this).data('varName') ] = $(this).val(); 
}); 

または、:

与えられ、
Array.from(document.querySelectorAll('form input')).forEach(function(el) { 
    allVariables[ el.dataset.varName ] = el.value; 
}); 

上記のHTMLは、のようなallVariablesオブジェクトにつながる:明らか

{ 
    'test1' : test1Value, 
    'test2' : test2Value 
} 

、あなたは可能性lsoはwindowグローバルオブジェクトを使用し、その代わりに変数を登録しますが、windowオブジェクトの変数がグローバルで、コード内の他の場所のプラグインで上書きする可能性があるという懸念があります。

+0

これは実際に私が必要とするもののために働くでしょう。どうもありがとうございました! – Nikolay

3

正しい構文は次のとおりです:私が何を言っているか

は次のようなものである

https://api.jquery.com/data/

var myVar = $(this).data("varName");

詳細はこちらを参照してください。

EDIT-

これは変数名の設定方法の問題には対処しませんが、データ属性を対象とする正しい方法です。

+0

私はjQueryデータ属性を使用していません。私はHTMLデータ*を使用しています。 https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Using_data_attributes 別のリファレンス:http://stackoverflow.com/questions/22113046/are-html-5-data-attributes jquery-data-same-thing – Nikolay

+0

何かを誤解していない限り、jQueryはHTML5データ属性をターゲットにするために '.data'を使用します。詳細はこちらのリンクを参照してください:https://api.jquery.com/data/#data -html5。 – Toby

+0

さらに詳しい情報はこちらをご覧ください:http://stackoverflow.com/a/11673313/4008056 – Toby

関連する問題