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

click不是针对返回的事件绑定DOMElement函数getElementById。正如评论者所指出click的,调用事件。您需要使用 jquery 或使用普通的旧事件处理程序。

于 2012-08-01T18:41:00.747 回答
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 回答
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 回答