2012-08-01 25 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基本框架,因爲它會掩蓋很多這樣的怪癖。