2017-05-20 25 views
1

私はこれを動作させる最良の方法を理解しようとしています。私はJSONデータベースを引き離す長いコードのリストを持っており、私はそれを合理化しようとしています。 - 関数の変数の一つとして参照.appendまたは.afterが変数として定義されていますか?

var insertData = function(formattedData, originalData, referencePoint, insertPoint, insertStyle) { 
    var formattedData = originalData.replace("%data%", referencePoint); 
    $(insertPoint).insertStyle(formattedData); 
} 

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"> 
</script> 

それは私がそれをここに持っているのと同じようにドット関数を定義することは可能です:私は次の関数を作成しましたか?この現在のコードでは、insertStyleは関数ではないことを示しています。insertStyleは変数名を取るべきであることを認識するためのコードはどうすればよいですか?同様に、insertDataによって呼び出される第5の変数が追加される場合は、.appendと読み替えてください。参考として

は、ここで私は、関数を呼んでいる方法は次のとおりです。事前にどのような援助や思考のための

insertData("formattedHeaderName", "HTMLheaderName", bio.name, "#header", "prepend"); 

ありがとう!

$(insertPoint)[insertStyle](formattedData); 

基本的に、すべてのプロパティへのアクセスは、計算されたプロパティとして表すことができます:あなたは計算されたプロパティを探している

+2

'var formattedData = formattedData;'このような行はすべて不要です。パラメータを渡すと、関数にスコープされた変数がすでに定義されています。 –

+0

ああ、頭をアップしてくれてありがとう、編集中。 – IkeDoud

答えて

1

foo["bar"]; // same as foo.bar 

元のコードでは、あなたが使用しています計算されていないプロパティであるため、インタプリタは文字通り "insertStyle"と呼ばれるメソッドは存在しません。

+0

それに続いて、エラー$(...)[insertStyle]は関数ではありません...私は行方不明かもしれませんか?以下の値を試してみてください: "prepend" ".prepend" .prependを前につけて、それらはすべて同じエラーをスローします。 – IkeDoud

+0

実際のメソッド名を文字列 '' prepend "'として使うべきです。投稿のコードがあなたのプロジェクトでやろうとしていることと同じであることをもう一度確認してください。私は2つのスニペットで見ることができます。 –

+0

書き直し中に誤字が見つかりましたが、今度は適切に前に出ているようです。ありがとう! – IkeDoud

0

あなたがでないようにあなたは、関数に引数を渡す:

insertData("formattedHeaderName", "HTMLheaderName", bio.name, "#header", "prepend"); 

これらの引数は文字列です。 jQueryメソッドではありません。

解決策は、使用する必要があるすべてのメソッドを定義することです。
そして、単に渡す文字列を比較して決定します。

var insertData = function(formattedData, originalData, referencePoint, insertPoint, insertStyle) { 

    var formattedData = originalData.replace("%data%", referencePoint); 

    if(insertStyle=="prepend"){ 
    $(insertPoint).prepend(formattedData); 
    } 
    if(insertStyle=="append"){ 
    $(insertPoint).append(formattedData); 
    } 
    if(insertStyle=="after"){ 
    $(insertPoint).after(formattedData); 
    } 
    // And so on... 
} 

多分これをachiveためにいくつかの他の方法がある...
しかし、この1は、迅速かつ実装が容易です。

関連する問題