我是编码新手,我已经学习了 html/css/js/java 的基础知识,至少我认为我已经学习了,直到我开始制作一个简单的游戏。
我制作了一个简单的选择你自己的冒险游戏,效果很好,因为每个选择都会进入一个新页面。
然后,我想我应该让它变得更复杂一些,所以我想让用户输入他们的名字,并将其存储在玩家的统计数据旁边显示。 我有一个下拉框,其中有 4 个 Angular 色选择。我想要有力量/法力/生命统计数据,并让玩家选择 Angular 色,以便能够在游戏开始前相应地调整这些统计数据,即男战士将有 2 个额外的力量、女法师2点额外法力等等
然后,我希望在他们的统计数据旁边显示基于他们的 Angular 色选择的图像,以便游戏可以开始。
到目前为止,我已经把我的头发一大堆地拉出来,并尝试了许多不同的方法,但到目前为止,我只到达了将带有用户输入的页面放入 iframe 的阶段。我可以用文本反射(reflect)他们的选择,但我无法在提交时加载图像。理想情况下,我希望在 iframe 的顶 Angular 有一个永久框,并将统计变量传递到 Angular 色图像旁边显示的统计数据中。
我真的非常感谢这里的任何帮助,特别是如果它可以使用 HTML/CSS/JS 解决,因为我不太熟悉 JQuery,并且希望使其尽可能简单。 我已经尽可能多地查找相关帮助,但我主要是寻找 PHP 或其他语言的答案。
我必须为我上面的胡言乱语和草率的编码提前道歉。 (我认真地认为这很容易呵呵)。 我不确定到目前为止我的代码是否有帮助,但无论如何我都会将其粘贴在下面。
UI 页面的 HTML 为:
<!DOCTYPE html>
<html >
<head>
<meta charset="UTF-8">
<title>Character Selection</title>
<link rel="stylesheet" href="css/style2.css">
<style>
img {
display: block;
margin: 0 auto;
}
</style>
</head>
<body>
<div>
<div id='gamestitle'>
<p>
<img src = "GAMETITLE.jpg"
alt = "Steve's Perilous Capers"/>
</p>
</div>
<br>
</div>
<div class='wrapper'>
<form id='nameForm'>
<div class='form-uname'>
<lable id='nameLable' for='nameField'>Create a username:</lable>
<input id='nameField' type='text' maxlength='25'></input>
</div>
<div class='form-sub'>
<button id='subButton' type='button'>Enter your name!</button>
</div>
</form>
<div>
<p id='result'></p></div>
</div>
<div>
</div>
<div>
<form>
Select your Hero please:
<select id="mySelect">
<option>Male Warrior</option>
<option>Male Mage</option>
<option>Female Warrior</option>
<option>Female Mage</option>
</select>
<br><br>
<input type="button" onclick="getOption()" value="Confirm">
</form>
</div>
<script src="js/index.js"></script>
<script>
document.getElementById("demo").innerHTML =
obj.options[obj.selectedIndex].text;
</script>
<p id="demo"></p>
</body>
</html>
CSS 是:
body {
margin: auto;
text-align: center;
}
li {
list-style:none;
}
li.fields {
margin: 0;
padding: 1em 0;
}
li.title {
cursor: pointer;
font-weight: bold;
font-size : 1.5em;
line-height: 2em;
background: #e3e3e3;
border-bottom: 1px solid #c5c5c5;
border-top: 1px solid white;
}
.gamestitle {
max-width: 100%;
margin: auto;
}
.hide { display: none;}
.result {
height: 200px;
width: 50%;
background-color: powderblue;
}
JS 文件:(我尝试使用图标和背景图像,但无法显示它们)
// the function which handles the input field logic
function getUserName() {
var nameField = document.getElementById('nameField').value;
var result = document.getElementById('result');
if (nameField.length < 3) {
result.textContent = 'Username must contain at least 3 characters';
//alert('Username must contain at least 3 characters');
} else {
result.textContent = 'Your Hero is: ' + nameField;
//alert(nameField);
}
}
function getOption() {
var obj = document.getElementById("mySelect");
document.getElementById("demo").innerHTML =
obj.options[obj.selectedIndex].text;
}
function swapImage(){
var image = document.getElementById("imageToSwap");
var dropd = document.getElementById("dd");
image.src = dropd.value;
};
// use an eventlistener for the click event
var subButton = document.getElementById('subButton');
subButton.addEventListener('click', getUserName, false);
var subButtonTwo = document.getElementById('subButtonTwo');
subButtonTwo.addEventListener('click', getOption, false);
$(function () {
$.widget("custom.iconselectmenu", $.ui.selectmenu, {
_renderItem: function (ul, item) {
var li = $("<li>"),
wrapper = $("<div>", {text: item.label});
if (item.disabled) {
li.addClass("ui-state-disabled");
}
$("<span>", {
style: item.element.attr("option-style"),
"class": "ui-icon " + item.element.attr("data-class")
})
.appendTo(wrapper);
return li.append(wrapper).appendTo(ul);
}
});
$("#mySelect")
.iconselectmenu()
.iconselectmenu("menuWidget")
.addClass("ui-menu-icons avatar");
});
/*
function getcurrentChoice() {
var characterSelection = ['MaleWarrior'], ['MaleMage'], ['FemaleWarrior'], ['FemaleMage'];
var currentChoice = document.getElementById('currentChoice').value;
var resultChoice = document.getElementById('resultChoice');
var subButtons = document.getElementById('subButtons');
subButtons.addEventListener('click', getcurrentChoice, false);
}
*/
对于困惑的编码感到抱歉,我为遇到的每个问题尝试了如此多的解决方法,以至于我不知道什么是有效的,什么是无效的,这并没有帮助。 我很确定现在事情已经失控了,浪费你的时间,但我很困惑。我确信我把事情复杂化了。 再次提前致谢, 史蒂夫。
最佳答案
检查一下:
https://jsfiddle.net/digitalrevenge/q9z1x6vv/
我添加了 img src
并对您的 JS 进行了一些更改。
我不确定它是否完全符合您的要求,但尝试一下总没有坏处;)
关于javascript - UI 问题 - 如何根据下拉框的选择触发图像加载?然后添加文本来覆盖图像结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45550832/