Cách chuyển đối tượng làm tham số trong hàm onclick javascript
Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn giải pháp truyền tham số cho hàm JavaScript onclick, ở đây chúng tôi đã xác định hai hàm sự kiện onclick để truyền các loại giá trị khác nhau được truyền dưới dạng tham số sẽ xảy ra khi người dùng nhấp vào hai nút khác nhau Show
Sử dụng hàm javascript, chúng tôi thường xác định phương thức của mình sau đó hiển thị giá trị tham số đã truyền theo cách chung đơn giản Hướng dẫn từng bước khi truyền tham số cho chức năng JavaScript Onclick. -Ở đây chúng tôi sử dụng thẻ h1 để hiển thị tiêu đề cho chương trình và xác định hai thành phần nút với sự kiện onclick giá trị khác nhau cho chức năng tải, truy cập các giá trị với các loại khác nhau Trong tập lệnh, chúng tôi đã xác định hàm 'fun()' với giá trị chung của đối số, sau đó trong hàm fun(), chúng tôi hiển thị đối số đã xác định bằng phương thức alert() sẽ mở hộp bật lên với giá trị mà chúng tôi đã chuyển dưới dạng tin nhắn
Phần kết luận. -Tóm lại, bây giờ chúng ta có thể biết cách truyền tham số cho chức năng onclick bằng javascript Khi chúng tôi thực thi chương trình trên trình duyệt, chúng tôi có thể thấy tiêu đề 'Tham số đã truyền sẽ hiển thị trên AlertBox' và hai nút 'Nhấp chuột' khi người dùng nhấp vào hộp cảnh báo nút đầu tiên sẽ bật lên với thông báo là 'Xin chào mọi người' của tham số chuỗi và khi người dùng nhấp vào Tôi hy vọng hướng dẫn chuyển tham số cho hàm JavaScript onclick này sẽ giúp ích cho bạn và các bước cũng như phương pháp được đề cập ở trên sẽ dễ thực hiện và thực hiện Tôi muốn vượt qua đối tượng lớp hoàn chỉnh (tôi. e đã khởi tạo một cái) thành một hàm select() làm tham số khi tôi nhấp (i. e. đã chọn đối tượng hộp kiểm của thể hiện lớp) Câu hỏi của tôi là dòng đó . cái này. cbox. setAttribute('onclick','select(this)'); Tôi cũng đã thử cách đó . cái này. cbox. setAttribute('onclick','select("'+this+'")'); . Tôi không thể chuyển cả hộp kiểm lẫn đối tượng lớp (NodeElement) sang hàm select() làm tham số. Làm thế nào tôi có thể làm điều đó? Được chỉnh sửa vào ngày 5 tháng 8 bởi đại bàngTôi thêm câu để làm rõ hơn câu hỏi.
Liên kết để bình luậnChia sẻ trên các trang web khácNhiều tùy chọn chia sẻ hơn đại bàngĐăng ngày 5 tháng 8 đại bàng
Đăng ngày 5 tháng 8 Tôi đã tìm thấy giải pháp một phần bằng cách sử dụng hàm tĩnh và trỏ đến hàm tĩnh của lớp này . class NodeElement { no; x; y; tre; tdno; tdx; tdy; cbox; nodesArray; nodesTable; selected; constructor( x, y,nodesArray, nodesTable) { nodeCounter++; this.no = nodeCounter; this.x = x; this.y = y; this.nodesArray = nodesArray; this.nodesTable = nodesTable; //create elements this.tre = document.createElement("tr"); this.tre.id = "row"+this.no; this.tdno = document.createElement("td"); this.tdno.id = this.no; //get node number from session node array this.tdno.innerHTML = this.no; this.cbox = document.createElement("input"); this.cbox.type="checkbox"; this.cbox.id="cbox"+this.no; this.cbox.value=this.no; this.cbox.name="cbox"+this.no; // INSTEAD OF THIS ONE -> this.cbox.setAttribute('onclick','select()'); I USED BELOW ONE AND static FUNCTION I DEFINED BELOW this.cbox.setAttribute('onclick','NodeElement.selecting()'); this.tdx = document.createElement("td"); this.tdx.id="tdx"+this.no; this.tdx.innerHTML = this.x; this.tdy = document.createElement("td"); this.tdx.id="tdy"+this.no; this.tdy.innerHTML = this.y; } static selecting() { var source = window.event.target || window.event.srcElement ; if(source.checked) { console.log("selected..."); } else { console.log("un selected..."); } } }
Liên kết để bình luậnChia sẻ trên các trang web khácNhiều tùy chọn chia sẻ hơn đại bàngĐăng ngày 5 tháng 8 đại bàng
Đăng ngày 5 tháng 8 Tôi đã tìm thấy giải pháp một phần bằng cách sử dụng hàm tĩnh và trỏ đến hàm tĩnh của lớp này . class NodeElement { no; x; y; tre; tdno; tdx; tdy; cbox; nodesArray; nodesTable; selected; constructor( x, y,nodesArray, nodesTable) { nodeCounter++; this.no = nodeCounter; this.x = x; this.y = y; this.nodesArray = nodesArray; this.nodesTable = nodesTable; //create elements this.tre = document.createElement("tr"); this.tre.id = "row"+this.no; this.tdno = document.createElement("td"); this.tdno.id = this.no; //get node number from session node array this.tdno.innerHTML = this.no; this.cbox = document.createElement("input"); this.cbox.type="checkbox"; this.cbox.id="cbox"+this.no; this.cbox.value=this.no; this.cbox.name="cbox"+this.no; // INSTEAD OF THIS ONE -> this.cbox.setAttribute('onclick','select()'); I USED BELOW ONE AND static FUNCTION I DEFINED BELOW this.cbox.setAttribute('onclick','NodeElement.selecting()'); this.tdx = document.createElement("td"); this.tdx.id="tdx"+this.no; this.tdx.innerHTML = this.x; this.tdy = document.createElement("td"); this.tdx.id="tdy"+this.no; this.tdy.innerHTML = this.y; } static selecting() { var source = window.event.target || window.event.srcElement ; if(source.checked) { console.log("selected..."); } else { console.log("un selected..."); } } } Tôi đã tìm ra lỗi của mình và giải quyết vấn đề. mã tĩnh không giải quyết được vấn đề của tôi vì tôi không thể chuyển một thể hiện của lớp ở đó, vì nó là một mã tĩnh. Lỗi của tôi là, tôi đã sử dụng trích dẫn đơn từ trong https. //www. người lập trình. com/code-examples/javascript/setattribute+onclick mã mẫu giống như vậy để đặt thuộc tính cho sự kiện onclick. Tuy nhiên, khi tôi thay đổi trích dẫn đơn thành trích dẫn kép, tôi đã làm những gì tôi muốn . Đây là mã hoạt động .
class NodeElement { no; x; y; tre; tdno; tdx; tdy; cbox; nodesArray; nodesTable; selected; constructor( x, y,nodesArray, nodesTable) { nodeCounter++; this.no = nodeCounter; this.x = x; this.y = y; this.nodesArray = nodesArray; this.nodesTable = nodesTable; //create elements this.tre = document.createElement("tr"); this.tre.id = "row"+this.no; this.tdno = document.createElement("td"); this.tdno.id = this.no; //get node number from session node array this.tdno.innerHTML = this.no; this.cbox = document.createElement("input"); this.cbox.type="checkbox"; this.cbox.id="cbox"+this.no; this.cbox.value=this.no; this.cbox.name="cbox"+this.no; // THIS PIECE OF CODE IS NOT WORKING FOR ME -> this.cbox.setAttribute('onclick','select()'); BELOW CODE WORKS LIKE A CHARM this.cbox.setAttribute("onclick","select()"); this.tdx = document.createElement("td"); this.tdx.id="tdx"+this.no; this.tdx.innerHTML = this.x; this.tdy = document.createElement("td"); this.tdx.id="tdy"+this.no; this.tdy.innerHTML = this.y; } }
Liên kết để bình luậnChia sẻ trên các trang web khácNhiều tùy chọn chia sẻ hơn đại bàngĐăng ngày 5 tháng 8 đại bàng
Đăng ngày 5 tháng 8 Tôi cũng phải thêm chức năng chọn để hoàn thành giải pháp làm cách nào tôi có thể "chuyển đối tượng lớp"(i. e. chính xác hơn là "tìm" đối tượng nguồn/người gửi sự kiện trong số các thể hiện của lớp khác) .
function select() { //alternative function to find which checkbox is selected and its object var source = window.event.target || window.event.srcElement ; for (let i = 0; i<nodesArray.length ; i++ ) { let ne = nodesArray[i]; // node element if(ne.cbox === source ) { ne.setSelect(ne.cbox.checked); // I defined a setSelect in class object too... console.log("node " +ne.no +" selected : ?"+ne.isSelected() ); } } } Sau đó, tôi có thể tiếp cận đối tượng lớp. Tôi không thể tìm thấy cách để vượt qua nó trực tiếp
Liên kết để bình luậnChia sẻ trên các trang web khácNhiều tùy chọn chia sẻ hơn đại bàngĐăng ngày 6 tháng 8 đại bàng
Đăng ngày 6 tháng 8 Xin hãy thứ lỗi cho sự thiếu kiên nhẫn của tôi 🙏 . Tôi đang đặt câu hỏi và không để nó ở đó, tôi đang tiếp tục giải quyết nó và khi tôi tìm thấy giải pháp hiệu quả hoặc tôi gần giải quyết được hoặc tôi hiểu sai lầm của mình, tôi viết ở đây. 😇
Liên kết để bình luậnChia sẻ trên các trang web khácNhiều tùy chọn chia sẻ hơn BarandĐăng ngày 6 tháng 8 Barand
Đăng ngày 6 tháng 8 Tôi tò mò - vấn đề ban đầu mà bạn có giải pháp ở trên là gì?
Liên kết để bình luậnChia sẻ trên các trang web khácNhiều tùy chọn chia sẻ hơn đại bàngĐăng ngày 6 tháng 8 đại bàng
Đăng ngày 6 tháng 8 Để truyền đối tượng thể hiện của lớp Phần tử nút cho chức năng. Như thế này trong java . lớp công khai NodeElement { Phần tử nút () { } hộp kiểm công khai cbox; ... } trong một tệp java khác tôi có thể làm điều này nhập khẩu. ; NodeElement n1=NodeElement mới(); nếu (n1. cbox. đã kiểm tra) { chọn(n1); } Mục đích của tôi là làm điều tương tự trong javascript. Nhưng tôi không thể làm điều đó, thay vào đó tôi đã làm ở trên
Liên kết để bình luậnChia sẻ trên các trang web khácNhiều tùy chọn chia sẻ hơn
đáĐăng ngày 6 tháng 8 đá
Đăng ngày 6 tháng 8 Không sử dụng setAttribute để đính kèm trình xử lý onclick của bạn. Sử dụng addEventListener. Kết hợp điều đó với một bao đóng gọi hàm chọn của bạn và bạn chỉ có thể chuyển đối tượng hiện tại làm tham số giống như bất kỳ thứ gì khác. Nhìn vào chức năng chọn của bạn, tôi không nghĩ nó cần thiết Bạn có thể chuyển một đối tượng làm tham số trong JavaScript không?Trong JavaScript, bạn có thể sử dụng hàm làm giá trị, giống như số, chuỗi và đối tượng. Điều đó có nghĩa là bạn có thể chuyển chúng dưới dạng đối số , trả về chúng từ các hàm khác và đặt chúng làm thuộc tính của đối tượng.
Làm cách nào để truyền tham số trong hàm onclick trong JavaScript?Nhiệm vụ là chuyển một chuỗi dưới dạng tham số trên hàm onClick bằng javascript, chúng ta sẽ thảo luận về một số kỹ thuật. . ví dụ 1. Ví dụ này chỉ cần đặt đối số là chuỗi trong thuộc tính onClick của nút gọi hàm có chuỗi làm đối số bằng phương thức onClick() đầu ra Tôi có thể chuyển một đối tượng làm tham số chức năng không?Chúng ta có thể truyền một đối tượng vào một hàm JavaScript, nhưng các đối số phải có cùng tên với tên thuộc tính Đối tượng .
Onclick có hoạt động cho đầu vào không?Thuộc tính onclick của đối tượng Đầu vào chỉ định hàm xử lý sự kiện được gọi khi người dùng nhấp vào phần tử đầu vào . Nó không được gọi khi phương thức click() được gọi cho phần tử. Chỉ các phần tử biểu mẫu là các nút mới gọi trình xử lý sự kiện onclick. |