- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我想创建一个函数来查看哪个单选按钮处于事件状态,然后处理删除该效果的效果,并为每个单选按钮乌龟、狼、蜥蜴等使用真/假标志。所以就像
var wolfActive = true;
var lizardActive = false;
var turtleActive = false;
然后,当您设置其中一个事件时,您将传递给一个函数并查看所有其他函数以查看其是否正确。如果为真,则减去它的值。然后将其他设置为 false。
我主要希望这样做,这样当您切换单选按钮时,与这些单选按钮相关的统计数据/功能就不会保留。当从乌龟切换到蜥蜴时,我失去了 1 点力量,这种情况不应该发生在这种方法中。我对 JavaScript 很陌生,所以我不知道如何设置才能使其工作。我将在我的代码中向您展示我的意思
有人试图向我解释它,但我无法正确格式化它。
他说“当单选按钮发生变化时,事件监听器会调用一个函数来确定其中哪个是事件的,然后创建一个函数来找出哪些是事件的,并为每个按钮进行删除删除的一部分是将其设置为 false然后完成后将新的设置为 true”
这是我的 JavaScript 代码:
var wolfRadio = document.getElementById("wolf-radio");
var lizardRadio = document.getElementById("lizard-radio");
var wolfInterval;
var Wolf = 1;
var Wolflv = 1;
var WolfCexp = 0;
var WolfMexp = 100;
var NextMaxWolfExp = WolfMexp;
var Wolfstrength = 1;
var Strength = 2;
// This is an event dispatcher function. Based on the radio
// button that was clicked, run different functions.
function radioChanged(event) {
if (event.target === wolfRadio) {
wolfandstrength(true);
wolfXpUp(true);
// Run other functions...
} else if (event.target === lizardRadio) {
wolfandstrength(false);
wolfXpUp(false);
// Run other functions...
}
}
function wolfandstrength(wolfChecked) {
if (wolfChecked) {
Strength = Strength + Wolfstrength
document.getElementById("Strength").innerHTML = Strength;
} else {
Strength = Strength - Wolfstrength;
document.getElementById("Strength").innerHTML = Strength;
}
}
function wolfXpUp(wolfChecked) {
clearInterval(wolfInterval);
if (wolfChecked && WolfCexp < WolfMexp) {
wolfInterval = setInterval(function () { wolfXpUp(wolfChecked); },
200);
WolfCexp = WolfCexp + 1;
document.getElementById("WolfCexp").innerHTML = WolfCexp;
}
if (WolfCexp >= WolfMexp) {
Wolflv = Wolflv + 1;
WolfCexp = 0;
Wolf = Wolf + 1;
Wolfstrength = Wolfstrength + 1;
Strength = Strength + 1;
NextMaxWolfExp = NextMaxWolfExp * 1.5;
}
document.getElementById("Strength").innerHTML = Strength;
document.getElementById('WolfMexp').innerHTML = NextMaxWolfExp;
document.getElementById('Wolflv').innerHTML = Wolflv;
document.getElementById('WolfCexp').innerHTML = WolfCexp;
//document.getElementById('Turtle').innerHTML = Turtle;
}
//document.getElementById("turtle-radio").addEventListener("change",
turtleXpUp);
//document.getElementById("turtle-radio").addEventListener("change",
turtleandstrength);
wolfRadio.addEventListener("change", radioChanged);
lizardRadio.addEventListener("change", radioChanged);
document.getElementById("Strength").innerHTML = Strength;
<div id="turtle" class="control">
<label class="radio">
<input type="radio" name="Pets" id="turtle-radio">
</label><img src="turtle.png" alt="turtle" height="100" width="100"> Lv
<span id="Turtlelv">1</span> <span id="TurtleCexp">0</span> / <span
id="TurtleMexp">100</span>
<br />
<br />
<div id="lizard" class="control">
<label class="radio">
<input type="radio" name="Pets" id="lizard-radio">
</label><img src="lizard.png" alt="lizard" height="42" width="42">
Lv <span
id="Lizardlv">1</span> <span id="LizardCexp">0</span> / <span
id="LizardMexp">100</span>
<br />
<div id="wolf" class="control">
<label class="radio">
<input type="radio" name="Pets" id="wolf-radio">
</label><img src="wolf.png" alt="wolf" height="60" width="60">
Lv <span id="Wolflv">1</span> <span
id="WolfCexp">0</span> / <span id="WolfMexp">100</span></div>
<br />
<span id="Strength">0</span>
您可以从代码片段中看到,从狼切换到蜥蜴单选按钮效果很好,因为您从 2 强度开始。但当你从乌龟换成蜥蜴时,我不希望你失去 1 点力量。每个单选按钮增益仅应在选择单选按钮时打开。 (这就是为什么我想要一个好的真/假标志)。我的实际输出单选按钮功能/统计数据并不直接与它们的选择相关。我希望将其他单选按钮设为 false 而其中一个为 true 可以解决此问题。
最佳答案
所以,我可能重写了一点太多,但就我个人而言,我会采取如下所示的路线。
要定义哪个宠物获得哪个增益以及该增益的大小,请使用数据属性。例如,如果 wolf
应该加强strength
通过1
,那么就会有 data-buff-type="strength"
和data-buff-amount="1"
在 HTML 中。
然后,您可以单独存储基础统计数据,并具有检查/应用宠物增益的功能。我在每行旁边添加了注释来解释。
var baseStats = {
strength: 1,
mana: 1,
regen: 1
};
function getStats() {
var selectedPet = document.querySelector('input[name="Pets"]:checked'); //Find the selected pet
if (!selectedPet) return baseStats; //No pet selected, just return base stats
var buffType = selectedPet.dataset.buffType; //Get selected pet's data-buff-type
var buffAmount = parseInt( selectedPet.dataset.buffAmount ); //Get selected pet's data-buff-amount
var stats = {...baseStats}; //Copy our base stats
stats[buffType] += buffAmount; //Find the buff-type, add the buff-amount to it
return stats; //Return the buffed stats
}
function updateStats() {
var stats = getStats(); //Get buffed stats
document.querySelectorAll(".stat").forEach(e => e.innerHTML = stats[e.id]); //Set spans where ID matches stat type
}
//Add listener to all radio buttons
document.querySelectorAll('input[name="Pets"]').forEach(e => e.addEventListener("change", updateStats));
//Set the stats on page-load
updateStats();
div { margin: 5px 0; }
<div>
<input type="radio" name="Pets" id="wolf-radio" data-buff-type="strength" data-buff-amount="1">
<label for="wolf-radio">Wolf</label>
</div>
<div>
<input type="radio" name="Pets" id="lizard-radio" data-buff-type="mana" data-buff-amount="1">
<label for="wolf-radio">Lizard</label>
</div>
<div>
<input type="radio" name="Pets" id="turtle-radio" data-buff-type="regen" data-buff-amount="1">
<label for="wolf-radio">Turtle</label>
</div>
<div>
Strength: <span class="stat" id="strength"></span>
</div>
<div>
Mana: <span class="stat" id="mana"></span>
</div>
<div>
Regen: <span class="stat" id="regen"></span>
</div>
关于javascript - 为每个单选按钮制作一个简单的真/假标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56411499/
我注意到一些 PHP 框架只使用小写字母 true/false 而其他框架则使用大写字母。 这有什么区别吗?我个人更喜欢小写字母。 最佳答案 没什么区别,有些人认为 FALSE 是常量,因此使用旧的尖
在我看来,以下两种映射方式实际上没有区别。以下是基于 @MapsId javadoc 的示例: // parent entity has simple primary key @Entity publ
我想知道是否有人知道编译器如何解释以下代码: #include using namespace std; int main() { cout << (true && true || false &
我想知道为什么alert(new Boolean(false))打印 false 而不是打印对象,因为 new Boolean 应该返回对象。如果我使用 console.log(new Boolean
即使在 verify=False 时,Python 请求也会给我一个 ssl 握手失败(我知道不使用 SSL 是不可取的)。对于其他具有有效证书的站点,请求按预期工作。我正在使用2.7。 from l
TDPL 描述了 assert(false); 语句的行为。此类断言不会从发布版本中删除(与所有其他断言一样),并且实际上会立即停止程序。问题是为什么?为什么会有如此令人困惑的行为?他们可能会添加 h
如何确定文档是否存在于 Meteor 的集合中? 编辑:新代码。 mongodb 有一个 ProductName 的文档:Apples 输入产品是“苹果” var exists = Products.
我想在 R 中做一些相当复杂的事情,但我不确定从哪里开始。 我有一个看起来像这样的数据框: main_val sub_val bit_one bit_two one a 1
我正在尝试编写一个函数 long(S1,S2) 如果 S1 比 S2 长,则该函数应该为真,否则为假。到目前为止,我所拥有的是以下内容: longer(A,nil). longer(nil,B) :-
我想知道我在这里缺少什么我有一个代码可以检查图像是否基于 Canvas 是透明的。 function Trasparent(url, npc, clb) { var img = new Ima
我想在按下按钮时使其他类框架设置可见(false)。 有一个名为 DisplayScore 的类,该类获取 getContentPane().add(new ScoreInfo());来自 Score
我正在使用 TableLayout 和 TableRow 创建 6/6 网格按钮。 private Button myButton; private static final int
这个问题没有实际用途!我之所以问这个只是因为我很好奇! 在C++中,有一种方法可以通过在某处编写#define true false来将true伪造为false,然后在代码中到处的true都将被视为f
我不久前学习 java,所以也许我有一个愚蠢的问题。 我有一张表,我在其中存储了一些信息。我想在此表中检查一些信息的可用性(这将只有一行),如果是 - 从这一行中获取特定列中的信息,如果没有 - 做另
这是一个 JavaScript 问题... 我正在尝试返回完全不区分大小写的匹配项。例如,如果我在输入框中输入 "yo",我希望它返回 true,这在我当前的方法中是这样做的,但它也会返回 true
我认为,我在 JS 中写了一个直接的 if 语句,但它运行不正确。 function printLetter(LetterId) { var studentflag = $("#IsStude
我如何使用 Javascript 执行以下操作? var object function() { return { object: Return true if object
我试图让导航栏在向上滚动时向下滑动,并在单击#menu-bar 时保持固定。但是当我再次单击同一个按钮时,我不知道如何在自动隐藏时将值改回 false,就在我有两个按钮的时候。非常感谢任何帮助! $(
下面的代码 #include using namespace std; int main(){ char greeting[50] = "goodmorning everyone";
我正在使用数据源将数据填充到我的数据 GridView 中。但是,我正在尝试找到一种方法让用户能够隐藏他不想看到的列。 我可以在程序运行之前隐藏和显示列: [Browsable(false)] pub
我是一名优秀的程序员,十分优秀!