[英]Change text color with Select/Option
我正在尝试使用Select对象更改文本颜色,尝试获取我选择的颜色并将其设置为文本。 我的脚本中注释了两个函数,它们都是我试图完成的函数,但是都失败了。 不要求完整的答案/代码,只是想知道出什么问题了。 这是代码,感谢您的宝贵时间:
<!DOCTYPE HTML>
<html>
<head>
<title>Hola Mundo Controles</title>
<meta name="author" content="José Del Valle Cordero"/>
<meta charset="utf-8" />
</head>
<body>
<div class="main">
<div class="subject" id="subject">
<span id="salute">¡Hello!</span>
</div>
<div id="control">
<div class="color_option">
Color:
<select name="color_list" id="colors" >
<option value="cl_option1" checked="checked">Red </option>
<option value="cl_option2">Blue </option>
<option value="cl_option3">Yellow </option>
<option value="cl_option4">Black </option>
</select>
</div>
</div>
</div>
<script type="text/javascript">
var item,cl;
var colorsMap = {
'cl_option1' : "red",
'cl_option2' : "blue",
'cl_option3' : "yellow",
'cl_option4' : "black"
};
/*colors.onchange=function() {
var salute = document.getElementById("salute");
var item = document.getElementById("colors").selectedIndex;
var color = colorsMap[item];
salute.style.color = color;
};*/
/*$('#colors').change(function(){
var salute = document.getElementById("salute");
item=$(this).val();
cl = colorsMap[item];
salute.style.color = cl;
});*/
</script>
</body>
你近了 在<head>
包含jQuery:
<script src="//code.jquery.com/jquery-latest.js"></script>
然后在您的JS中:
<script type="text/javascript">
var colorsMap = {
'cl_option1' : "red",
'cl_option2' : "blue",
'cl_option3' : "yellow",
'cl_option4' : "black"
};
$('#colors').change(function(){
$("#salute").css('color', colorsMap[$(this).val()]);
});
</script>
原始脚本太笨拙,无法混合使用非jQuery和jQuery函数。
除了页面中缺少jQuery外,我看到的最大问题是您的js立即被执行。 您的两次尝试都使用js与这些html节点所在的DOM进行通信,但是,当您的脚本运行时,DOM可能不准备使用那些节点。
jQuery提供了一种方法,只需一行就可以完成此操作。 如果您想学习本机js(我强烈推荐),则需要阅读有关何时窗口准备就绪的内容。
要回答您的问题:
第一个代码块(非jQuery)将selectIndex用作select元素,该元素返回所选项目的数值(索引值)。 您希望字符串值对照您的颜色映射进行检查。 更新代码,使其看起来像:
var colors = document.getElementById('colors');
colors.onchange=function(){
var salute = document.getElementById("salute");
var item = document.getElementById("colors").value;
var color = colorsMap[item];
salute.style.color = color;
}
将工作。
更新的小提琴: http : //jsfiddle.net/pH4wW/2/
第二个,您只需要jQuery :)
代码中有太多事情需要更改。
如果您正在使用js
colors.onchange=function(){
var salute = document.getElementById("salute");
var item = document.getElementById("colors").selectedIndex;
var color = colorsMap[item];
salute.style.color = color;
};
必须更改为
document.getElementById("colors").onchange=function(){
var salute = document.getElementById("salute");
var item = document.getElementById("colors").value;
var color = colorsMap[item];
document.getElementById("salute").style.color = color;
};
您必须使用document.getElementById附加onchange事件
如果jQuery
$('#colors').change(function(){
var salute = document.getElementById("salute");
item=$(this).val();
cl = colorsMap[item];
$('#salute').css('color', cl);
});
另外,您缺少jquery库。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.