2017-05-07 13 views
0

のonchangeハンドラ関数を呼び出していない私のjavascriptのコードは次のとおりです。選択タグが

var headerCell = document.createElement("TD"); 

var frag = document.createDocumentFragment(), 
var select = document.createElement("select"); 
select.innerHTML = '<select id ="ddl" onchange="somekdfj()"><option value="0">wow</option><option value="1">pls</option></select>'; 

frag.appendChild(select); 
headerCell.appendChild(frag); 
row.appendChild(headerCell); 

javascript関数:私はこれに新しいです

function somekdfj(){   
    alert("HI"); 
} 

。誰も私が上記のjavascript関数を呼び出すことができない理由を教えてください?行の下

+0

を追加している親要素にinnerHTMLを設定することができます場合、私はあなたのコードをデバッグすることが容易にでき、やり方を下回る目でそれを試してみてください[mcve]を提供することができます。 – Picard

答えて

1

はあなたのコードに誤りがあります:

select.innerHTML = '<select id ="ddl" onchange="somekdfj()"><option value="0">wow</option><option value="1">pls</option></select>';

理由:ここでは、innerHTMLのを変更しているのonchange のようなイベントをバインドするつもりはないタグを選択します。あなたは以下の行のこの部分を変更することができることをやるために:select要素の中にあなたが別のselect要素を追加するとonchangeは内部要素の上にあるので、

select.setAttribute("onchange","somekdfj()"); 
select.setAttribute("id","ddl"); 
select.innerHTML = '<option value="0">wow</option><option value="1">pls</option>'; 
+0

あなたはとても忘れてしまいましたが、select = document.createElement( "select");私のコードでコメントされており、select.innerHTML = '';私のコードにありましたが、うまく機能しませんでした。あなたはこのように動作していないバインドイベントです。もう一度ありがとうございます:D – MOHIT

+0

'select = document.createElement(" select ")'ここでinnerHTMLを追加したい場所にコメントすると、 'headerCell.innerHTML'を使用する必要があります –

+0

これだけ変更して動作していますheaderCell = document.createElement( "TD"); '; row.appendChild(headerCell); – MOHIT

0

あなたは、正しく選択要素を作成されていません問題を引き起こします。あなたはcreateElementアプローチで行くか、他されている場合は、直接あなたが作成した要素に

headerCell = document.createElement("TD"); 

frag = document.createDocumentFragment(), 
select = document.createElement("select"); 
select.id="dd1"; 

frag.appendChild(select); 
headerCell.appendChild(frag); 
row.appendChild(headerCell); 

var options = [{val: 0, text: "wow"}, {val: 1, text: "pls"}]; 

for (var i = 0; i < options.length; i++) { 
    var option = document.createElement("option") 
    option.value=options[i].val; 
    option.text=options[i].text; 
    select.appendChild(option); 
} 

select.onclick=somekdfj; 
+0

ありがとう、今私は私の手でもう1つのアプローチを持ってくれてありがとう – MOHIT

+0

このアプローチを使用することをアドバイスします。入力にさらに値を加えなければならない場合や、createElementを使用しているのでアプリケーションを拡張しやすくなります。それに続くべきである –

関連する問題