2012-08-01 307 views
0

我正在尝试使用click()的函数。我在控制台中没有得到任何错误,我怎样才能做到这一点,当点击发生时,它会执行该功能中的操作?这是我正在使用的代码。使用click()函数javascript

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; 
     }); 
    }); 
+0

那么,这是行不通的?很确定,'返回响应'实际上并没有做任何事情。 – 2012-08-01 18:41:09

+0

@火箭他们单独工作,但如果我尝试使用上面的代码,它不会 – 2012-08-01 18:47:02

+0

您正在随机选择一个ID。愚蠢的问题,但你想点击正确的元素? – 2012-08-01 19:04:55

回答

3

click不是针对一个DOMElement其中getElementById返回一个事件结合功能。正如评论者所指出的,click会调用该事件。你需要使用jQuery或使用普通的旧事件处理程序。

+2

它是一个函数,但它不附加事件处理程序,只需单击该元素即可。 – Esailija 2012-08-01 18:42:12

+0

实际上有''element.click'](https://developer.mozilla.org/en/DOM/element.click),但它是用来触发事件,而不是设置它。 – 2012-08-01 18:42:19

+0

@Esailija固定。 – 2012-08-01 18:42:48

1

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

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

它不起作用 – 2012-08-01 18:47:24

+0

@ Mr.1.0:你是什么意思“不起作用”? – 2012-08-01 18:49:01

+0

@Diogo例如这个'document.getElementById(inputId).addEventListener(“click”,function(){console.log(“test”)});'不写入控制台 – 2012-08-01 18:51:33

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