使用带有click()javascript的函数

using a function with click() javascript

本文关键字:javascript 函数 click      更新时间:2023-09-26

我正在尝试使用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;
        });
    });

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

如果您没有使用任何JavaScript框架,则应该使用addEventListener而不是click函数。

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

这是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这样的基础框架,因为它会掩盖很多这样的怪癖。