gpt4 book ai didi

javascript - 每次触发 'sessionStorage.fgattempt' 或 'fgMade()' 时,如何增加 'threeMade()' 的值?

转载 作者:搜寻专家 更新时间:2023-10-31 08:23:00 24 4
gpt4 key购买 nike

所以我正在为我打的一场篮球比赛创建一个统计跟踪器,我需要每次投篮或三分球时,投篮命中率也会上升。还可能需要一种方法来缩短我在这里编写的 javascript 代码。

基本上要问的是每次运行函数“fgMade()”和“threeMade()”时如何增加“sessionStorage.fgattempt”的值。很高兴看到“threeMade()”也增加了“sessionStorage.threeattempt”。

<!DOCTYPE html>
<html>

<head>
<script>
function fgMade() {
if (typeof(Storage) !== "undefined") {
if (sessionStorage.fgmade) {
sessionStorage.fgmade = Number(sessionStorage.fgmade) + 1;
} else {
sessionStorage.fgmade = 1;
}
document.getElementById("result1").innerHTML = sessionStorage.fgmade;
} else {
document.getElementById("result1").innerHTML = "Sorry, your browser does not support web storage...";
}
}

function fgAttempt() {
if (typeof(Storage) !== "undefined") {
if (sessionStorage.fgattempt) {
sessionStorage.fgattempt = Number(sessionStorage.fgattempt) + 1;
} else {
sessionStorage.fgattempt = 1;
}
document.getElementById("result2").innerHTML = sessionStorage.fgattempt;
} else {
document.getElementById("result2").innerHTML = "Sorry, your browser does not support web storage...";
}
}

function threeMade() {
if (typeof(Storage) !== "undefined") {
if (sessionStorage.threemade) {
sessionStorage.threemade = Number(sessionStorage.threemade) + 1;
} else {
sessionStorage.threemade = 1;
}
document.getElementById("result3").innerHTML = sessionStorage.threemade;
} else {
document.getElementById("result3").innerHTML = "Sorry, your browser does not support web storage...";
}
}

function threeAttempt() {
if (typeof(Storage) !== "undefined") {
if (sessionStorage.threeattempt) {
sessionStorage.threeattempt = Number(sessionStorage.threeattempt) + 1;
} else {
sessionStorage.threeattempt = 1;
}
document.getElementById("result4").innerHTML = sessionStorage.threeattempt;
} else {
document.getElementById("result4").innerHTML = "Sorry, your browser does not support web storage...";
}
}

function block() {
if (typeof(Storage) !== "undefined") {
if (sessionStorage.block) {
sessionStorage.block = Number(sessionStorage.block) + 1;
} else {
sessionStorage.block = 1;
}
document.getElementById("result5").innerHTML = sessionStorage.block;
} else {
document.getElementById("result5").innerHTML = "Sorry, your browser does not support web storage...";
}
}

function steal() {
if (typeof(Storage) !== "undefined") {
if (sessionStorage.steal) {
sessionStorage.steal = Number(sessionStorage.steal) + 1;
} else {
sessionStorage.steal = 1;
}
document.getElementById("result6").innerHTML = sessionStorage.steal;
} else {
document.getElementById("result6").innerHTML = "Sorry, your browser does not support web storage...";
}
}

function defRebound() {
if (typeof(Storage) !== "undefined") {
if (sessionStorage.defrebound) {
sessionStorage.defrebound = Number(sessionStorage.defrebound) + 1;
} else {
sessionStorage.defrebound = 1;
}
document.getElementById("result7").innerHTML = sessionStorage.defrebound;
} else {
document.getElementById("result7").innerHTML = "Sorry, your browser does not support web storage...";
}
}

function offRebound() {
if (typeof(Storage) !== "undefined") {
if (sessionStorage.offrebound) {
sessionStorage.offrebound = Number(sessionStorage.offrebound) + 1;
} else {
sessionStorage.offrebound = 1;
}
document.getElementById("result8").innerHTML = sessionStorage.offrebound;
} else {
document.getElementById("result8").innerHTML = "Sorry, your browser does not support web storage...";
}
}

function turnover() {
if (typeof(Storage) !== "undefined") {
if (sessionStorage.tocount) {
sessionStorage.tocount = Number(sessionStorage.tocount) + 1;
} else {
sessionStorage.tocount = 1;
}
document.getElementById("result9").innerHTML = sessionStorage.tocount;
} else {
document.getElementById("result9").innerHTML = "Sorry, your browser does not support web storage...";
}
}
</script>
<style>
table,
th,
td {
border: 1px solid black;
}
</style>
</head>

<body>
<table>
<thead>
<tr>
<th>FGM</th>
<th>FGA</th>
<th>3PM</th>
<th>3PA</th>
<th>BLK</th>
<th>STL</th>
<th>DREB</th>
<th>OREB</th>
<th>TO</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<div id="result1">N/A</div>
</td>
<td>
<div id="result2">N/A</div>
</td>
<td>
<div id="result3">N/A</div>
</td>
<td>
<div id="result4">N/A</div>
</td>
<td>
<div id="result5">N/A</div>
</td>
<td>
<div id="result6">N/A</div>
</td>
<td>
<div id="result7">N/A</div>
</td>
<td>
<div id="result8">N/A</div>
</td>
<td>
<div id="result9">N/A</div>
</td>
</tr>
</tbody>
</table>
<p><button onclick="fgMade()" type="button">FGM</button></p>
<p><button onclick="fgAttempt()" type="button">FGA</button></p>
<p><button onclick="threeMade()" type="button">3PM</button></p>
<p><button onclick="threeAttempt()" type="button">3PA</button></p>
<p><button onclick="block()" type="button">BLK</button></p>
<p><button onclick="steal()" type="button">STL</button></p>
<p><button onclick="defRebound()" type="button">DREB</button></p>
<p><button onclick="offRebound()" type="button">OREB</button></p>
<p><button onclick="turnover()" type="button">TO</button></p>
</body>

</html>

最佳答案

我假设这就是您正在寻找的那种东西?供引用。该解决方案仍然可以在无法访问 session 存储的情况下运行,在我看来,这几乎是一个必不可少的部分。

// A simple way to encapsulate the code into some object, 
// yet due to being a self invoked function, it still has the
// luxury of 'private' properties.
const App = function(myNameSpace) {
let state = { // Initial app state.
fgmade: 0,
fgattempt: 0,
threemade: 0,
threeattempt: 0,
block: 0,
steal: 0,
defrebound: 0,
offRebound: 0,
turnover: 0
};


// A simple method to load the state from session storage.
const loadState = () => {
try {
if (sessionStorage.getItem("appState") != null) {
state = JSON.parse(sessionStorage.getItem("appState"));
}
} catch (e) {
// todo?
}
};


// A simple state method to update the applciation state in session storage.
const setState = () => {
try {
sessionStorage.setItem("appState", JSON.stringify(state));
} catch (e) {
// todo?
}
};


// A simple function to reste the state.
const resetState = () => {
Object.keys(state).forEach(k => state[k] = 0);
setState();
render();
};


// A VERY simple render method.
const render = () => {
document.getElementById("result1").innerHTML = state.fgmade;
document.getElementById("result2").innerHTML = state.fgattempt;
document.getElementById("result3").innerHTML = state.threemade;
document.getElementById("result4").innerHTML = state.threeattempt;
document.getElementById("result5").innerHTML = state.block;
document.getElementById("result6").innerHTML = state.steal;
document.getElementById("result7").innerHTML = state.defrebound;
document.getElementById("result8").innerHTML = state.offRebound;
document.getElementById("result9").innerHTML = state.turnover;
};


// This is the 'bulk' of the code, where it works out which property to update.
const buttonClickHandler = (e) => {
const txt = e.target.textContent.replace(/\ /g, '').toUpperCase();

switch (txt) {
case 'FGM':
updateProperty('fgmade');
updateProperty('fgattempt');
break;
case 'FGA':
updateProperty('fgattempt');
break;
case '3PM':
updateProperty('threemade');
updateProperty('fgattempt');
updateProperty('threeattempt');
break;
case '3PA':
updateProperty('threeattempt');
break;
case 'BLK':
updateProperty('block');
break;
case 'STL':
updateProperty('steal');
break;
case 'DREB':
updateProperty('defrebound');
break;
case 'OREB':
updateProperty('offRebound');
break;
case 'TO':
updateProperty('turnover');
break;
default:
resetState();
}
};


// A simple function to update some data.
const updateProperty = (key) => {
state[key] += 1;
setState();
render();
};


// A function responsible for binding events to updates & whatnot.
const dispatchEvents = () => {
document.querySelectorAll('button').forEach((button, index) => {
button.setAttribute('data-index', index);
button.addEventListener('click', buttonClickHandler);
});
};


// Public method to state the app.
myNameSpace.launch = () => {
loadState();
render();
dispatchEvents();
};


// Make sure to return the public object.
return myNameSpace;
}({});


// Very lazy solution to document.ready.
setTimeout(App.launch, 250);
table,
th,
td {
border: 1px solid black;
}

button#reset {
background: red;
border-color: red;
color: white;
}
<table>
<thead>
<tr>
<th>FGM</th>
<th>FGA</th>
<th>3PM</th>
<th>3PA</th>
<th>BLK</th>
<th>STL</th>
<th>DREB</th>
<th>OREB</th>
<th>TO</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<div id="result1">N/A</div>
</td>
<td>
<div id="result2">N/A</div>
</td>
<td>
<div id="result3">N/A</div>
</td>
<td>
<div id="result4">N/A</div>
</td>
<td>
<div id="result5">N/A</div>
</td>
<td>
<div id="result6">N/A</div>
</td>
<td>
<div id="result7">N/A</div>
</td>
<td>
<div id="result8">N/A</div>
</td>
<td>
<div id="result9">N/A</div>
</td>
</tr>
</tbody>
</table>



<p><button>FGM</button></p>
<p><button>FGA</button></p>
<p><button>3PM</button></p>
<p><button>3PA</button></p>
<p><button>BLK</button></p>
<p><button>STL</button></p>
<p><button>DREB</button></p>
<p><button>OREB</button></p>
<p><button>TO</button></p>
<p><button id="reset">RESET</button></p>

关于javascript - 每次触发 'sessionStorage.fgattempt' 或 'fgMade()' 时,如何增加 'threeMade()' 的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53838583/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com