2017-03-16 4 views
1

javascriptを使用してonclickを変更するには?javascriptを使ってonclickを変更するには?

https://jsfiddle.net/749rt0m7/1/

私はこのコードを使用しようとしましたが、機能しません。どのようにできるのか ?

<span onclick="test_fn('aaa,bbb')" id="xx">edit</span> 
    <script> 
     document.getElementById('xx').onclick = "test_fn(111,222)"; 
    </script> 
+1

あなたのinline属性は、コンマを含む文字列である1つの引数を渡していますが、変更しようとしたバージョンが2つの引数を渡していることに注意してください。 – nnnnnn

答えて

2

ここにはいくつかのことがあります。

まずはtest_fn()はあなたのjsfiddleの機能ではありません。呼び出すには、定義する必要があります。

第2に、onclick属性を関数ではなく文字列に設定しています。以下のコードを使用して関数に設定する必要があります。ここで

document.getElementById('xx').onclick = function() { test_fn(111,222) }; 

、私は質問を誤解のように見えますworking jsfiddle.

UPDATE

の一例です。実際にonclick属性を変更したい場合は、HTMLの内容を変更して、setAttribute()を使います。だからあなたのコードは次のようになります。.. nnnnnnがある関数を使用して、このあなたが渡している1つのパラメータを使用して、元の記事のコメントで述べているようにここで

document.getElementById('xx').setAttribute("onClick", "test_fn('111,222')"); 

は、サイドノートとして updated jsfiddle

です文字列​​の場合は、2つを渡したいと思うかもしれません。あなたは2番目のパラメータとして最初のパラメータと222として111を渡したい場合は、して関数を呼び出しますいずれかtest_fn(111,222)かと(整数としてパラメータを渡す)test_fn('111','222')「私はドン

+0

いいえ、ページをロードするときに 'onclick =" test_fn 'aaa、bbb') "'〜を 'onclick =" test_fn( '111,222') "' –

+0

私は自分の答えを更新しました。 – Alesana

+1

更新については、OPが彼らが求めていることを理解していないほど、あなたがその質問を誤解しているとは確信していません。関数を直接代入するのではなく、新しい文字列に属性を変更することにはどんな利点がありますか?私は、 "View Source"が元のソースを表示しているときに、HTMLが "見える"ものではなく、要素がクリックされたときに実際に呼び出された関数と呼び出されたパラメータによって "正しい"コード。 – nnnnnn

0

あなたはあなたのコードを実行test_fn('111,222')機能にonclickを設定する必要があります。

<script> 
    document.getElementById('xx').onclick = function() { test_fn('111,222'); } 
</script> 
+0

いいえロードページを 'onclick =" test_fn( 'aaa、bbb') "から' onclick = "test_fn( '111,222')に変更したい場合は –

+1

はい、そうです。 javascriptの 'onclick'は関数である必要があります – hackerrdave

+0

@mongkonmamiw私は、あなたが右クリック>ビューソースを変更しようとしていることを疑っています。さて、ブラウザの仕組みではありません。 viewsソースは、サーバーから返される初期/元のコンテンツのみを表示します。ライブDOMを見ることで、更新されたonclick属性を見ることができます(ブラウザのdevコンソールを使って表示します) –

0
document.getElementById('xx').onclick = function() { 
    test_fn(111, 222); 
}; 

HTMLでonclickを設定し、文字列を使用します。 JSを介して設定するときは、関数を使用します。

+0

いいえロードページを 'onclick =" test_fn( 'aaa、bbb') "から' onclick = "test_fn( '111,222')"に変更したい場合 –

+1

これはまさに上記のコードがすることです。それを試してみてください。 –

+0

あなたは私にいくつかのフィドルを見せてくれますか? –

0

(文字列としてパラメータを渡します) tはあなたが関数にtest_fn を定義している場所が...一つだけが必要とされているHTMLにし、jsの中で二回要素onclickに機能をフックしている、とあなたが実際に今

<span id="xx">edit</span> 
<!-- or .. not both , they are doing pretty much the same thing--> 
<script> 
    document.getElementById('xx').onclick = function(){ 
    console.log('clicked') 
    } 
</script> 

あなたの関数を定義する必要があります参照しますtest_fnを定義する必要がありますHTML onclickバージョンは一つの引数を渡しているとJSスクリプトのバージョンが2 argumensを渡していることを要素に

function test_fn(arg1 , arg2){ 
    condole.log(arg1 , arg2) 
} 

ノートをクリックすると呼ばれます。

+0

'onclick =" test_fn( '111,222')に変更されていない、 ) " –

+0

が編集され、ここに別のバージョンがあります。 http://jsbin.com/vutotar/edit?html,js,console,output – aeid

関連する問題