javascript - UI 问题 - 如何根据下拉框的选择触发图像加载?然后添加文本来覆盖图像结果?

标签 javascript html css iframe

我是编码新手,我已经学习了 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/

相关文章:

javascript - D3.js分层边缘捆绑按组着色

javascript - 获取图像 ID 和更改图像 JavaScript

javascript - 按钮/链接等复杂形状

css背景图像似乎没有在链接旁边创建图标

javascript - 在 php 中导入 Javascript 文件?

javascript - D3 通过引用强制布局绑定(bind)不同步

css - HTML/CSS - 修复代码中的 div(下面有更多详细信息)

javascript - 如何将Angular Material md-datepicker的日期值初始化为任意指定日期

javascript - 需要帮助形成 JQuery 来克隆 <select> 元素并插入到父 div 中

jQuery - 如果输入文本等于答案则添加类