var fields = {date:{type:'date'}};
var createField = function(field, settings)
{
var myArgs = {};
myArgs = fields[field];
console.log(fields[field]);
console.log(myArgs);
console.log(settings);
if('label' in settings && settings.label) myArgs.label = settings.label;
// write html
var html = '';
myArgs = null;
return html;
}
var type = 'date';
createField(type, {label:'Date of Birth'});
// log prints no "label" in fields[field] or myArgs, but does in settings
createField(type, {});
// log prints label of "Date of Birth" in both fields[field] and myArgs, but not in settings
言い換えれば、私の関数は、私のコードの他の場所では使用しない変数をゼロから作成します:myArgs
。それは、問題のフィールドのargsをページ上部の不変の宣言から取得します。関数に渡されたsettings
にラベルがある場合は、変数をmyArgs
変数に追加します。その後、関数を終了するために戻る前に、私はmyArgs
をクリアします。
label
はmyArgs
で、それがその後のsettings
によって渡されていなくても、それはsettings
に渡された最初の時、後に毎回表示されます。
EDIT FTR、label
はmyArgs
又はfields[field]
で印刷されることはありません。後者には存在せず、印刷時には存在してはならない。
* UPDATE * フィドル:https://jsfiddle.net/Lxqvt6mk/2/
Thom、コードが機能しません。実行可能なコードを貼り付けます。スニペットを使用します。 –
時間を節約するために問題の簡略化されたバージョンを書くときに、誤って '&& 'の代わりに'と 'をタイプしました。私は 'html'を定義するのを忘れていました。なぜなら、それは私の '// htmlの書き込み 'のコメントの中に含まれていたからです(再びあなたの時間を節約するため)。ここでは、私の問題を正確に示しているjsフィドルがあります。これは、2つの訂正を行った後です:https://jsfiddle.net/Lxqvt6mk/2/ –