2011-08-02 42 views
23

Tôi không biết nếu điều này được cho phép hay thậm chí có thể. Có thể tạo một phần tử div với một sự kiện onclick để nếu bất cứ nơi nào trong khu vực của div được nhấp, sự kiện sẽ chạy.thêm sự kiện onclick vào div

Ví dụ JAVASCRIPT:

var divTag = document.createElement("div"); 
divTag.id="new-ID"; 
var onClickCommand = "printWorking()" //printworking is another method that simply print "I'm working" to the console 
divTag.onclick = onClickCommand; 
console.log("onclick command added"); 
console.log(divTag.onclick); 
parentDiv.appendChild(divTag); //This simply adds the div tag to the page. 

HTML được tạo:

<!--<div id="new-ID">--> 

whatever content I decide to add to the divTag.innerHTML 

tôi nhận thấy cách theres không có lệnh onclick đi qua để div tạo ra. Id này bởi vì nó không được phép?

Vì vậy, 2 câu hỏi sau đó.

1: Có thể thêm onclick vào div và có nó xảy ra nếu bất kỳ khu vực nào của div được nhấp vào. 2: Nếu có thì tại sao phương pháp onclick không đi qua div của tôi.


Làm thế nào rất kỳ quặc:

divTag.setAttribute("onclick", "printWorking()"); 

Trên hoạt động hoàn hảo.

Tất cả các bên dưới đều không và sẽ không chuyển onclick vào div.

divTag.onclick=printWorking; 

divTag.onclick="printWorking"; 

divTag.onclick="printWorking()"; 

Nhiều biến thể khác cũng đã được thử.

+0

CNTT sẽ xuất hiện rằng cài đặt onclick theo cách thủ công không hoạt động như dự định. Tôi cần sử dụng .setAttriubte thay vì – OVERTONE

+0

@feeela. Tôi đã tìm kiếm. Có nhiều ví dụ không có vẻ liên quan hoặc tôi đã thử bản thân mình và không có hiệu lực. Lý do mà dường như là liên quan đến bình luận trên của tôi – OVERTONE

+0

Nếu bạn đã đặt 'setAttribute' vào một câu trả lời tôi sẽ có upped nó. Vì vậy, 1 cho câu hỏi với câu trả lời. – Pascal

Trả lời

20

Có thể thêm onclick vào div và có nó xảy ra nếu bất kỳ khu vực nào của div được nhấp.

Có ... mặc dù cần thận trọng. Đảm bảo có một số cơ chế cho phép truy cập bàn phím. Build on things that work

Nếu có thì tại sao phương pháp onclick không chuyển sang div của tôi.

Bạn đang chỉ định một chuỗi có chức năng được mong đợi.

divTag.onclick = printWorking; 

Có những cách tốt hơn để gán trình xử lý sự kiện, mặc dù các phiên bản cũ hơn của Internet Explorer là khác nhau. Có rất nhiều very small event libraries và mọi thư viện chính (chẳng hạn như YUI hoặc jQuery) có chức năng xử lý sự kiện.

+0

Dấu ngoặc đơn không bắt buộc phải không? – OVERTONE

+3

Nếu có dấu ngoặc đơn thì đó sẽ là hàm ** gọi ** và giá trị trả về sẽ được gán thay cho chính hàm đó. – Quentin

+1

Điều đó có ý nghĩa rất nhiều bây giờ. Tôi đã làm điều đó nhiều lần ở nơi khác trong mã của mình và không biết chuyện gì đang diễn ra. – OVERTONE

2

Gán onclick như thế này:

divTag.onclick = printWorking; 

Thuộc tính onclick sẽ không mất một chuỗi khi được giao. Thay vào đó, nó có một tham chiếu hàm (trong trường hợp này là printWorking).
Thuộc tính onclick có thể là một chuỗi khi được chỉ định trong HTML, ví dụ: <div onclick="func()"></div>, nhưng điều này thường không được khuyến nghị.

+4

Tại sao nó không được khuyến cáo? –

2

Mọi thứ đều hoạt động tốt. Bạn không thể sử dụng thẻ divtag.onclick, vì thuộc tính "onclick" không tồn tại. Trước tiên, bạn cần tạo thuộc tính này bằng cách sử dụng .setAttribute(). Nhìn vào số này http://reference.sitepoint.com/javascript/Element/setAttribute. Bạn nên đọc tài liệu trước khi bạn bắt đầu đưa "-".

Các vấn đề liên quan