2012-04-18 13 views
1

は私が動的に新しいdiv要素を作成し、そのdivの中でonclickイベントを追加し、値を渡すためにしようとしています。このsample_1メソッドからのdivのonClickメソッド'this'値をあるJavaScript関数から別の関数に渡すことができません。

<div onClick="sample_1(this)" /> 

からJavaScript関数を呼び出しています「これは」からもらいましたsample_1関数のパラメータが、私は第二の方法にthisの値を渡すことはできませんよ。そのonClickの方法で

function sample_1 (divSelected) { 
    if (!$(divSelected).attr('disabled')) { 
     $('div[id=sample_1]').append("<div id='sample_1_1" + categoryID + "' class='selectedActivityCategory' style='background-color:#d9eaf7;' > <img src='../Images/close.png' onclick='sample_2(" + divSelected.value + ");' /> </div>"); 
    } 

} 


function sample_2(divSelected) 
{ 
/* Some Code */ 
} 

私は、IEの開発者ツールにこのダイナミックなdiv要素を探しています「sample_1_1」オブジェクトのdivSelected値を渡す代わりに、その書き込み:

sample_2([object HTMLDivElement]); 

私はどのようにして、div1をsample_1からsample_2に渡すことができますか?

私は最初のdivの参照にアクセスして、その参照をメソッドsample_1_1に渡しています。そこから、作成したdivの新しいdivとonclickイベントを作成しています。同じものを渡そうとしています。 1番目のdivのsample_1_1メソッドで作成されたdivのonclickメソッドへの参照。

+4

divには 'value'プロパティがありません。 'divSelected.value'でどういうことを期待していますか? – fcalderan

+0

あなたはonclickハンドラを定義するときに文字列の連結を行っていますが、それはうまくいきません。とにかくそれを渡すのはなぜですか? 'this'をもう一度使い、' divSelected.parentNode.parentNode'を実行して 'sample_1'を取り出してください。 –

+0

Lee Kowalkowski - 実際にdiv 'sample_1'は、 'sample_1'メソッドを呼び出すdivと同じではありません。そのdivの参照を次のメソッドに渡す必要があります。どうすればそれを達成できますか? –

答えて

1

あなたがしようとしていることを理解できません。通常のJavascript thisにはvalueというプロパティはありません。あなたはdiv要素の内容を取得しようとしている場合はJQueryを通じてあなたが(ないvalue経由)が、$(this).html()を行うことによってDIVの内容を取得することができますので、

、あなたは、this$(this)を混合しています。

だから、可能な解決策のようなものになるだろう:私はあなたの小さな一例here作ら

<div id="yourdiv">Content...</div> 

$(document).ready(function() { 
    $('#yourdiv').click(function() { 
     sample_1($(this)); 
    }); 
}); 

function sample_1(div_selected) { 
    alert("Contents are: " + div_selected.html()); 
} 

...

1

としては、DIV要素が性質を持っていない、コメントで述べています。 div内のテキストにアクセスする場合は、innerHTMLを使用してください。パラメータ渡しは実際にはうまく動作します。

function sample_1 (divSelected) { 
    alert(divSelected.innerHTML); 
    sample_2(divSelected); 

} 


function sample_2(divSelected){ 
    /* Some Code */ 
    alert(divSelected.innerHTML); 
} 
関連する問題