0

で関数を使用しようとしていますclick()。コンソールにエラーが表示されません。クリックが発生したときに関数でアクションを実行するようにするにはどうすればよいですか? ここに私が取り組んでいるコードがあります。

inputIds = [].filter.call(document.getElementsByTagName('input'), function(el) {
                return el.id.indexOf('ansx') === 0;
            }).map(function(el) {
                return el.id;
            });
            // random number between low and high range
            inputId = inputIds[Math.floor(Math.random() * inputIds.length)];

    document.getElementById(inputId).click(function() {
        chrome.extension.sendMessage({ message: "text here" }, function(response) {
            return response;
        });
    });
4

3 に答える 3

3

clickDOMElementwhichに対するイベント バインディング関数ではありませんgetElementById。コメント投稿者が指摘したようにclick、イベントを呼び出します。jquery を使用するか、単純な古いイベント ハンドラーを使用する必要があります。

于 2012-08-01T18:41:00.747 に答える
1

これは、ブラウザ間で機能する addEvent の一般的な実装です。

function addEvent(el, type, eventHandle){
   if ( el.addEventListener ) {
      el.addEventListener( type, eventHandle, false );
   } else if ( el.attachEvent ) {
      el.attachEvent( "on" + type, eventHandle );
   } else {
      el[type] = eventHandle;
   }
}

あなたのコードは次のようになります

addEvent(document.getElementById(inputId), "click", function() {
    chrome.extension.sendMessage({ message: "text here" }, function(response) {
        return response;
    }); 
  });

jQuery のような基本的なフレームワークを使用することをお勧めします。

于 2012-08-01T19:01:18.200 に答える
1

JavaScript フレームワークを使用していない場合は、関数addEventListenerの代わりに使用する必要がありclickます。

document.getElementById(inputId).addEventListener("click", function() {
    chrome.extension.sendMessage({ message: "text here" }, function(response) {
        return response;
    });
});
于 2012-08-01T18:42:47.897 に答える