私はドラッグ ウォーズという高校でプレイした古いゲームのレプリカに取り組んでいます。所有する各薬物の数量を保持するグローバル変数があります。もともと私は、各薬の売買操作ごとに異なる関数を使用していました。いくつかのコードを節約し、ある程度のスケール機能を提供しようとして、購入用の 1 つの関数に変更し、drugqty、drugprice (別の関数によって実行)、および drugname を渡したいと考えました。
私が立ち往生している部分は、(関数でローカルに使用される)drugqty をグローバル変数に更新しようとしていることです。
function buy(drugqty, drugprice, drugname)
{
if (money < drugprice)
{
window.alert("You do not have enough money to do that!")
}
else if(money >= drugprice)
{
var maxdrug = money/drugprice;
var addtoqty;
addtoqty=prompt("How many would you like to purchase? They are $" + drugprice +" a unit. You can afford " + Math.floor(maxdrug) + "." );
if((addtoqty*drugprice)>money)
{
window.alert("Nice try you need more money to do that!")
}
else {
drugqty = parseInt(drugqty, 10) + parseInt(addtoqty, 10);
money = money - (drugprice*addtoqty);
document.getElementById(drugname+"qty").innerHTML=drugqty;
document.getElementById("money").innerHTML=money;
}
}
}
以下は、ある特定の薬の購入ボタンです。
<td><center><button onclick="buy(cocaineqty, cocaine, 'cocaine')">Buy</center></button></center></td>
ボタンが押されると、関数が呼び出され、正しく実行されます。
グローバル変数 cocaineqty を、ローカル関数 drugqty が作成するもので更新する方法を理解する必要があるだけです。
私は次のようなことを試しました
drugname+"qty"=drugqty;
私の2つの考えは、その情報が表示されている場所から再度解析するか、何らかの方法で関数内のグローバル変数を更新することでした(動的に実行できるように、将来的に複数の薬物に使用します)
<td id="cocaineqty" align="center">0</td>
ここに初めて投稿しますが、投稿の変更や間違いの修正を喜んで行います。御時間ありがとうございます!
編集:チェックされた回答に基づいて正しい情報のためにコードを更新しました
function buy(drugqty, drugprice, drugname)
{
if (money < drugprice)
{
window.alert("You do not have enough money to do that!")
}
else if(money >= drugprice)
{
var maxdrug = money/drugprice;
var addtoqty;
addtoqty=prompt("How many would you like to purchase? They are $" + drugprice +" a unit. You can afford " + Math.floor(maxdrug) + "." );
if((addtoqty*drugprice)>money)
{
window.alert("Nice try you need more money to do that!")
}
else {
drugqty = parseInt(drugqty, 10) + parseInt(addtoqty, 10);
money = money - (drugprice*addtoqty);
document.getElementById(drugname+"qty").innerHTML=drugqty;
document.getElementById("money").innerHTML=money;
window[drugname+"qty"]=drugqty;
}
}
ご支援いただきありがとうございます。