JavaScript中的高效方法
您好,如何在JavaScript中多次使用一个方法而不重复和生成另一个方法。因为我所做的是,我生成了一个具有相同字段和代码的方法,但唯一的区别是id。我需要每个方法的一个参数,即idJavaScript中的高效方法,javascript,jquery,Javascript,Jquery,您好,如何在JavaScript中多次使用一个方法而不重复和生成另一个方法。因为我所做的是,我生成了一个具有相同字段和代码的方法,但唯一的区别是id。我需要每个方法的一个参数,即id function enemyGet() { new enemyMove2() new enemyMove() new enemyMove3() } function enemyMove2() { var enemyimage = document.getElementByI
function enemyGet() {
new enemyMove2()
new enemyMove()
new enemyMove3()
}
function enemyMove2() {
var enemyimage = document.getElementById("enemy");
var leftenemy = parseInt(enemyimage.style.left);
var topenemy = parseInt(enemyimage.style.top);
var time = setTimeout("enemyMove2()", 20)
if (leftenemy < leftplayer) {
leftenemy = leftenemy + 5;
}
if (leftenemy > leftplayer) {
leftenemy = leftenemy - 5;
}
if (topenemy < topplayer) {
topenemy = topenemy + 5;
}
if (topenemy > topplayer) {
topenemy = topenemy - 5;
}
enemyimage.style.left = leftenemy + "px";
enemyimage.style.top = topenemy + "px";
var hit_list = $("#x").collision(".lollol");
hit_list.remove();
}
function enemyMove() {
var enemyimage = document.getElementById("enemy2");
var leftenemy = parseInt(enemyimage.style.left);
var topenemy = parseInt(enemyimage.style.top);
var time = setTimeout("enemyMove()", 20)
if (leftenemy < leftplayer) {
leftenemy = leftenemy + 5;
}
if (leftenemy > leftplayer) {
leftenemy = leftenemy - 5;
}
if (topenemy < topplayer) {
topenemy = topenemy + 5;
}
if (topenemy > topplayer) {
topenemy = topenemy - 5;
}
enemyimage.style.left = leftenemy + "px";
enemyimage.style.top = topenemy + "px";
var hit_list = $("#x").collision(".lollol");
hit_list.remove();
}
function enemyMove3() {
var enemyimage = document.getElementById("enemy3");
var leftenemy = parseInt(enemyimage.style.left);
var topenemy = parseInt(enemyimage.style.top);
var time = setTimeout("enemyMove3()", 20)
if (leftenemy < leftplayer) {
leftenemy = leftenemy + 5;
}
if (leftenemy > leftplayer) {
leftenemy = leftenemy - 5;
}
if (topenemy < topplayer) {
topenemy = topenemy + 5;
}
if (topenemy > topplayer) {
topenemy = topenemy - 5;
}
enemyimage.style.left = leftenemy + "px";
enemyimage.style.top = topenemy + "px";
var hit_list = $("#x").collision(".lollol");
hit_list.remove();
}
函数enemyGet(){
新的enemyMove2()
新的enemyMove()
新的enemyMove3()
}
函数enemyMove2(){
var enemyimage=document.getElementById(“敌人”);
var leftbenefy=parseInt(enemyimage.style.left);
var topfeary=parseInt(enemyimage.style.top);
var time=setTimeout(“enemyMove2()”,20)
如果(左敌人<左玩家){
左敌人=左敌人+5;
}
如果(左敌人>左玩家){
左敌人=左敌人-5;
}
如果(顶层<顶层){
顶级敌人=顶级敌人+5;
}
如果(顶级敌人>顶级玩家){
Top敌军=Top敌军-5;
}
enemyimage.style.left=左敌人+“px”;
enemyimage.style.top=top敌军+px;
var hit_list=$(“#x”).collision(“.loll”);
点击列表。删除();
}
函数enemyMove(){
var enemyimage=document.getElementById(“enemy2”);
var leftbenefy=parseInt(enemyimage.style.left);
var topfeary=parseInt(enemyimage.style.top);
var time=setTimeout(“enemyMove()”,20)
如果(左敌人<左玩家){
左敌人=左敌人+5;
}
如果(左敌人>左玩家){
左敌人=左敌人-5;
}
如果(顶层<顶层){
顶级敌人=顶级敌人+5;
}
如果(顶级敌人>顶级玩家){
Top敌军=Top敌军-5;
}
enemyimage.style.left=左敌人+“px”;
enemyimage.style.top=top敌军+px;
var hit_list=$(“#x”).collision(“.loll”);
点击列表。删除();
}
函数enemyMove3(){
var enemyimage=document.getElementById(“enemy3”);
var leftbenefy=parseInt(enemyimage.style.left);
var topfeary=parseInt(enemyimage.style.top);
var time=setTimeout(“enemyMove3()”,20)
如果(左敌人<左玩家){
左敌人=左敌人+5;
}
如果(左敌人>左玩家){
左敌人=左敌人-5;
}
如果(顶层<顶层){
顶级敌人=顶级敌人+5;
}
如果(顶级敌人>顶级玩家){
Top敌军=Top敌军-5;
}
enemyimage.style.left=左敌人+“px”;
enemyimage.style.top=top敌军+px;
var hit_list=$(“#x”).collision(“.loll”);
点击列表。删除();
}
在这种情况下,您可以参数化不同调用之间的值
您可以将不同的id
作为参数传递给enemyMove
方法
function enemyMove(id) {
var enemyimage = document.getElementById(id);
var leftenemy = parseInt(enemyimage.style.left);
var topenemy = parseInt(enemyimage.style.top);
var time = setTimeout(function(){
enemyMove(id);
}, 20)
if (leftenemy < leftplayer) {
leftenemy = leftenemy + 5;
}
if (leftenemy > leftplayer) {
leftenemy = leftenemy - 5;
}
if (topenemy < topplayer) {
topenemy = topenemy + 5;
}
if (topenemy > topplayer) {
topenemy = topenemy - 5;
}
enemyimage.style.left = leftenemy + "px";
enemyimage.style.top = topenemy + "px";
var hit_list = $("#x").collision(".lollol");
hit_list.remove();
}
使用参数:
function enemyGet() {
// pass the id as a argument to the function
enemyMove("enemy2")
enemyMove("enemy")
enemyMove("enemy3")
}
function enemyMove(enemy) {
// the variable enemy is the id passed as an argument to the function
var enemyimage = document.getElementById(enemy);
var leftenemy = parseInt(enemyimage.style.left);
var topenemy = parseInt(enemyimage.style.top);
// Pass the parameter in timeout as well. You have access to enemy variable due to concept of closure
var time = setTimeout(function(){enemyMove(enemy)}, 20)
if (leftenemy < leftplayer) {
leftenemy = leftenemy + 5;
}
if (leftenemy > leftplayer) {
leftenemy = leftenemy - 5;
}
if (topenemy < topplayer) {
topenemy = topenemy + 5;
}
if (topenemy > topplayer) {
topenemy = topenemy - 5;
}
enemyimage.style.left = leftenemy + "px";
enemyimage.style.top = topenemy + "px";
var hit_list = $("#x").collision(".lollol");
hit_list.remove();
}
函数enemyGet(){
//将id作为参数传递给函数
enemyMove(“enemy2”)
敌人行动(“敌人”)
enemyMove(“enemy3”)
}
功能enemyMove(敌人){
//变量是作为参数传递给函数的id
var enemyimage=document.getElementById(敌人);
var leftbenefy=parseInt(enemyimage.style.left);
var topfeary=parseInt(enemyimage.style.top);
//同时在超时中传递参数。由于闭包的概念,您可以访问敌方变量
var time=setTimeout(函数(){enemyMove(敌人)},20)
如果(左敌人<左玩家){
左敌人=左敌人+5;
}
如果(左敌人>左玩家){
左敌人=左敌人-5;
}
如果(顶层<顶层){
顶级敌人=顶级敌人+5;
}
如果(顶级敌人>顶级玩家){
Top敌军=Top敌军-5;
}
enemyimage.style.left=左敌人+“px”;
enemyimage.style.top=top敌军+px;
var hit_list=$(“#x”).collision(“.loll”);
点击列表。删除();
}
您可以使用方括号表示法引用函数:
// Store reference to global object for use wherever
var global = this;
...
var n = 3;
// Call method based on value of n
global['enemyMove' + n]();
您可以将函数设置为全局/窗口对象以外的某些对象的属性(方法)。是否有一种方法可以只使用一个方法,但具有不同的id?是的,这也是我的问题。。但有没有办法让它继续移动?@user2242573不是你,我是说阿伦普约翰尼。
setTimeout
没有传递参数-这是一个问题。有没有一种方法可以只使用一种方法,但具有不同的id?是的。您正在将id作为参数传递给函数使用new
调用函数的任何原因?要停止计时器,仅当没有冲突时才需要调用setTimeout。i、 e基于命中的值_list@BasaratAli我没有意识到新的出现在OP:)
// Store reference to global object for use wherever
var global = this;
...
var n = 3;
// Call method based on value of n
global['enemyMove' + n]();