简单Javascript函数问题

简单Javascript函数问题,javascript,Javascript,通过一个调用addDamage函数的简单按钮,可以实现此功能: var damage=0; function addDamage() { damage+=10; document.getElementById("p1s").innerHTML=damage; } 这并不是: var damage=0; function addDamage(who) { who+=10; document.getElementById("p1s").innerHTML=who; } 使用此按钮: <bu

通过一个调用addDamage函数的简单按钮,可以实现此功能:

var damage=0;
function addDamage()
{
damage+=10;
document.getElementById("p1s").innerHTML=damage;
}
这并不是:

var damage=0;
function addDamage(who)
{
who+=10;
document.getElementById("p1s").innerHTML=who;
}
使用此按钮:

<button type="button" onclick="addDamage(damage)">Add</button>
添加
这可能是显而易见的。我是新来的。谢谢

var who=0;//想用谁不损坏
var who=0; // want to use who not damage
function addDamage(who)
{
who+=10;
document.getElementById("p1s").innerHTML=who;
}

// also change me from damage to who
<button type="button" onclick="addDamage(who)">Add</button>
功能损害(世卫组织) { who+=10; document.getElementById(“p1s”).innerHTML=who; } //也把我从伤害变成了谁 添加
另一个不错的解决方案是这样

<button id="addDamage"> Add </button>
<div id="showDamage"> </div>

// add handler to button
document.getElementById("addDamage").addEventListener("click", (function() {
    // damage is not stored in global space.
    var damage = 0,
        // div is only gotten once.
        div = document.getElementById("showDamage");
    // show functionality is in its own function so its easily changed
    function show() {
        div.textContent = damage;
    }
    // call show to show the initial damage
    show();

    // return event handler
    return function() {
        // change damage
        damage+=10;
        // show the new damage
        show();
    };
})());
添加
//将处理程序添加到按钮
document.getElementById(“addDamage”).addEventListener(“单击”),函数(){
//损坏不会存储在全局空间中。
var损坏=0,
//div只有一次。
div=document.getElementById(“showDamage”);
//显示功能在其自身的功能中,因此易于更改
函数show(){
div.textContent=损坏;
}
//呼叫show以显示初始损坏
show();
//返回事件处理程序
返回函数(){
//更换损坏
损伤+=10;
//显示新的损坏
show();
};
})());
var who=0;//想用谁不损坏
功能损害(世卫组织)
{
who+=10;
document.getElementById(“p1s”).innerHTML=who;
}
//也把我从伤害变成了谁
添加
另一个不错的解决方案是这样

<button id="addDamage"> Add </button>
<div id="showDamage"> </div>

// add handler to button
document.getElementById("addDamage").addEventListener("click", (function() {
    // damage is not stored in global space.
    var damage = 0,
        // div is only gotten once.
        div = document.getElementById("showDamage");
    // show functionality is in its own function so its easily changed
    function show() {
        div.textContent = damage;
    }
    // call show to show the initial damage
    show();

    // return event handler
    return function() {
        // change damage
        damage+=10;
        // show the new damage
        show();
    };
})());
添加
//将处理程序添加到按钮
document.getElementById(“addDamage”).addEventListener(“单击”),函数(){
//损坏不会存储在全局空间中。
var损坏=0,
//div只有一次。
div=document.getElementById(“showDamage”);
//显示功能在其自身的功能中,因此易于更改
函数show(){
div.textContent=损坏;
}
//呼叫show以显示初始损坏
show();
//返回事件处理程序
返回函数(){
//更换损坏
损伤+=10;
//显示新的损坏
show();
};
})());

您将在函数中向
who
添加10。通过调用时传递的参数,
who
获取全局变量
damage
的值

函数使用更新后的
who
值来设置元素的innerHTML。所有这些都有效。然后函数退出<代码>谁超出范围。
who
的更新值现在被遗忘

再次单击按钮时,它将使用
损坏
,该值仍然是其原始值0(零)
who
再次获取该值,然后获取10+,即10,依此类推


要更新全局变量,请从函数返回它,然后在处理程序中设置它

var damage=0;
function addDamage(d)
{
  d+=10;
  document.getElementById("p1s").innerHTML=d;
  return d;
}

添加

您将在函数中向
who
添加10。通过调用时传递的参数,
who
获取全局变量
damage
的值

函数使用更新后的
who
值来设置元素的innerHTML。所有这些都有效。然后函数退出<代码>谁超出范围。
who
的更新值现在被遗忘

再次单击按钮时,它将使用
损坏
,该值仍然是其原始值0(零)
who
再次获取该值,然后获取10+,即10,依此类推


要更新全局变量,请从函数返回它,然后在处理程序中设置它

var damage=0;
function addDamage(d)
{
  d+=10;
  document.getElementById("p1s").innerHTML=d;
  return d;
}

添加

Cheeso发现了一个基本问题,即JavaScript参数是按值传递的。要获得所需的行为,可以将计数器包装在对象中:

var player1 = { damage: 0 }; 

function addDamage(who) {
   who.damage+=10;
   document.getElementById("p1s").innerHTML=who.damage;
}
然后,您的按钮将执行以下操作:

<button type="button" onclick="addDamage(player1)">Add</button>
然后按钮看起来像:

<button type="button" onclick="addDamage(player1, 'p1s')">Add</button>
添加

Cheeso发现了一个基本问题,即JavaScript参数是按值传递的。要获得所需的行为,可以将计数器包装在对象中:

var player1 = { damage: 0 }; 

function addDamage(who) {
   who.damage+=10;
   document.getElementById("p1s").innerHTML=who.damage;
}
然后,您的按钮将执行以下操作:

<button type="button" onclick="addDamage(player1)">Add</button>
然后按钮看起来像:

<button type="button" onclick="addDamage(player1, 'p1s')">Add</button>
添加

谁是谁?它的数据类型是什么?谁是谁?它的数据类型是什么我想做的是添加到全局变量中:损害,但是能够为多个不同的全局变量重用函数。我靠近了吗?@Casey-在正确的轨道上,但你需要用物体包裹你的伤害计数器。见答案+1到@Cheeso以确定根本问题。是的,请参阅Joel Lee的答案:。您还可以从func返回更新后的值,并在onclick中设置变量。请参阅上面的编辑。我想做的是添加到全局变量:damage,但能够为多个不同的全局变量重用该函数。我靠近了吗?@Casey-在正确的轨道上,但你需要用物体包裹你的伤害计数器。见答案+1到@Cheeso以确定根本问题。是的,请参阅Joel Lee的答案:。您还可以从func返回更新后的值,并在onclick中设置变量。请参见上面的编辑。