บทความนี้วิเคราะห์วิธีแก้ปัญหาที่ settimeout () ไม่สามารถเรียกฟังก์ชันพารามิเตอร์ใน JS ได้ แบ่งปันสำหรับการอ้างอิงของคุณดังนี้:
วิธีแก้ปัญหา: เขียนเมธอด settimeout () ใหม่และใช้ฟังก์ชั่นปิด ดังนี้:
var _st = window.settimeout; window.settimeout = function (fref, mdelay) {ถ้า (typeof fref == 'function') {var argu = array.prototype.slice.call (อาร์กิวเมนต์, 2); var f = function () {fref.apply (null, argu); - return _st (f, mdelay); } return _st (fref, mdelay);}ด้วยการเขียนใหม่ดังกล่าวเมื่อใช้ SetTimeOut () เพื่อเรียกใช้ฟังก์ชันพารามิเตอร์คุณสามารถใช้แบบฟอร์มต่อไปนี้:
settimeout (สนุก 10, param);
ความสนุกคือฟังก์ชั่น; 10 คือวงจรการโทรหน่วยเป็นมิลลิวินาที Param เป็นพารามิเตอร์ของฟังก์ชั่นความสนุก
อีกวิธีที่ง่ายกว่า:
ฟังก์ชั่นการย้าย (id, target_x, target_y, t) {var ele = document.getElementById (id); // การแจ้งเตือน ("divobject:"+ele) var xpos = parseInt (ele.style.left); //alert(ELE.STYLE.LEFT) var ypos = parseInt (ele.style.top); if (xpos <target_x) {xpos ++; } if (ypos <target_y) {ypos ++; } ele.style.left = xpos + "px"; Ele.style.top = ypos+"px"; // ฟังก์ชั่นตัวเองเรียกว่าซ้ำสะกดเป็นรูปแบบสตริงให้ความสนใจกับคำพูดของพารามิเตอร์แรก var repeet = "การย้าย ('"+id+"',"+target_x+","+target_y+","+t+")" var movment = settimeout (ทำซ้ำ t);}สำหรับข้อมูลเพิ่มเติมเกี่ยวกับเนื้อหาที่เกี่ยวข้องกับ JavaScript โปรดตรวจสอบหัวข้อของไซต์นี้: "สรุปเอฟเฟกต์และเทคนิคการสลับ JavaScript", "สรุปทักษะอัลกอริธึมการค้นหา JavaScript", "สรุปผลการสรุปและเทคนิคการสรุปของ JavaScript ของ JavaScript อัลกอริทึมและเทคนิคการสำรวจ JavaScript "และ" สรุปการใช้งานทางคณิตศาสตร์ JavaScript "
ฉันหวังว่าบทความนี้จะเป็นประโยชน์กับการเขียนโปรแกรม JavaScript ของทุกคน