1

私は次のことを達成しようとしています:

this.inputs[options.el.find('form').attr('class')] = {};

this.inputs[options.el.find('form').attr('class')][options.elements[x].selector] = false;

ただし、構文エラーなしで上記を実行することはできません!

このオブジェクト構造を達成する方法はありますか?

4

2 に答える 2

2

その構文は合法に見えますが、これらの長いワンライナーは誰にも何の恩恵も与えていません。失敗した場所を見つけることができるように、少し分解します。

var className = options.el.find('form').attr('class');
var selector = options.elements[x].selector;

this.inputs[className] = {};
this.inputs[className][selector] = false;
于 2013-01-21T10:19:29.870 に答える
0

オブジェクトへのインデックスは常に文字列でなければなりません:

var obj = {
  a: 2;
}

obj.a = 3; //a is 3 now
obj['a'] = 4;//a is 4 now

あなたが言っoptions.elements[x].selectorinput[name="username"]ので、この行で推測します:

this.inputs[options.el.find('form').attr('class')][options.elements[x].selector] = false;

あなたが本当にやろうとしていることは次のとおりです。

this.inputs[options.el.find('form').attr('class')]['username'] = false;

したがって、次のようにすることができます。

var sel = options.elements[x].selector;
console.log( 'sel is ' + sel );
this.inputs[options.el.find('form').attr('class')][sel] = false;

sel が文字列であることを確認してください。あなたは試してみたいかもしれません

var sel = options.elements[x].selector.value;

この.valueビットは、入力要素内からテキストを取得します。

于 2013-01-21T10:39:03.987 に答える