2012-02-12 5 views
0

次のように私は(それはjqueryのを使用していないことに注意してください)定義されたJavaScript関数を持っている:どのように特定のjavascript関数をすべての要素のページ読み込みで実行させるのですか?

function getCalculationFormsByType(selectObject, parentNode, countIndex) 
{ 
    var operationID = parseInt(selectObject.value, 10); 

    var divs = parentNode.getElementsByTagName("DIV"); 

    // the rest of the function goes here, it isn't really important ... 
} 

関数は次のように(再び、ノーjqueryの)で実行されます。

<select name="operationChoose[]" onchange="getCalculationFormsByType(this, this.parentNode.parentNode, '1')" > 

すべてこれまでのところ動作します。問題は、ページ上のすべてのselect要素のページロードでこの関数を実行する必要があることです。このように(私のアイデアはjqueryのを使用していますが、それは解決のために必要ではありません):

$("document").ready(function(){ 
    $("select[name='operationChoose[]']").each(function(){ 
     getCalculationFormsByType(---I DO NOT KNOW WHAT TO PASS HERE---); 
    }); 
}); 

あなたが見ることができるように、私の問題は、私はjQueryの関数に渡すかわからないということです。私はJavaScriptのこれら3つの値が何であるかわからないし、jQueryのeachループでどうやって得ることができるのだろうか。

答えて

1

javasciptのparentNodeにアクセスできる必要があります。jQueryオブジェクトをクラシックのjavascriptに転送してください。

「文書」は決して機能しません。 $("document").readyでの引用符を削除する必要がありdocumentや速記

$(function(){ 
    $("select[name='operationChoose[]']").each(function(){ 
     getCalculationFormsByType(this, this.parentNode.parentNode, '1'); 
    }); 
}); 
+0

この方法が間違っている:

これは正しい実装です。 '$(this)'はjQueryオブジェクトを返します。 –

+0

@Rob W私の悪い。私の第二引数で訂正されました。今は正しいです –

+0

'$(this)[0]'を完全に削除して、代わりに 'this'を使うのが良いでしょう。あなたの現在の方法は、犬の周りに檻を建て、ドアを開けて犬を手放し、彼に触れることと同じです。必要ではなく、高価です。 –

2

を使用してください。また$(..function here..)$(document).ready(...)の略です。

$(function() { 
    $("select[name='operationChoose[]']").each(function(i) { // <-- i-th element 
     // this points to the <select> element, HTMLSelectElement 
     getCalculationFormsByType(this, this.parentNode.parentNode, i); 
    }); 
}); 
関連する問題