用于检测选项值的代码未按预期工作
Code to detect option value does not work as expected
我试图在javascript中进行一些字符串比较。我已经看过几个教程和示例,但它们似乎不起作用。我错过了一些基本的东西?
尝试 1
function addAspect(aspect) {
var print = document.createElement('p');
var ptext;
if (aspect == "Option1") ptext = document.createTextNode("This is option1");
}
不行。
然后我找到了这个所有读者都说它工作正常的例子
function addAspect() {
var print = document.createElement('p');
var ptext;
var aspect = String(document.getElementById("aspectResult").value);
if (aspect == "Option1") ptext = document.createTextNode("This is option1");
}
不行。
我还尝试了.toString()
以及'==='
完全匹配的比较。
完整代码
<html>
<head>
<script type="text/javascript">
function addAspect()
{
var print = document.createElement('p');
var ptext;
var aspect = document.getElementById("aspectResult").value;
if (aspect == "Option1"){
ptext = document.createTextNode("This is option1");
}
print.appendChild(ptext);
document.getElementById("mainBlock").appendChild(print);
}
</script>
</head>
<body>
<form>
<select id="aspectResult">
<option value="Option1">Option1</option>
</select>
<input type="button" value="Check" onclick="addAspect()"/>
</form>
<span id="mainBlock"> </span>
</body>
</html>
有什么建议吗?
首先,简要介绍一下下拉菜单的工作原理:
<select id="aspectResult">
<option value="Option1">Option1</option>
</select>
要从下拉列表中读取所选值,您应该执行以下操作:
var dropdown = document.getElementById('aspectResult'),
selectedValue = dropdown.options[dropdown.selectedIndex].value;
然后,创建包含文本节点的 <p>
元素:
var p = document.createElement('p'),
txt;
if (selectedValue == 'Option1') {
txt = document.createTextNode('This is option 1');
}
之后,您可以将新创建的段落附加到您选择的容器中:
var container = document.getElementById('mainBlock');
if (txt) {
p.appendChild(txt);
container.appendChild(p);
}
现在都在一起!
如果要尝试将
ptext
添加到段落中,则需要在末尾添加两行:
function addAspect(aspect) {
var prnt = document.createElement('p');
var ptext;
if( aspect == "Option1" ) {
ptext = document.createTextNode("This is option1");
prnt.appendChild(ptext); // Add the text to the paragraph
document.body.appendChild(prnt); // Add the paragraph to the document
}
}
您的函数创建了一个文本节点,但随后不对其进行任何操作,因此您的代码似乎什么都不做。 您需要将文本节点附加到 DOM 中某处的元素:
document.body.appendChild(ptext);
您的完整代码似乎在IE9,Firefox 4和Chrome 11中运行良好。 请参阅 http://jsbin.com/ekura5/。
相关文章:
- 代码只能在jsfiddle中工作
- 为什么不是'我的函数在解析云代码中工作吗?当我在Angular和Express中测试时,它是有效的
- 谷歌地图Api和JS代码不工作
- 如何检查这个代码点火器php函数是否工作,该函数是否在ajax url中使用
- 为什么这个代码不能正常工作
- Don't工作警报代码jQuery
- addEventListener的Javascript代码不工作!?(单击时打开放大的img)
- 我需要一个jQuery函数来只工作在700px以上的屏幕大小,无法在我的代码中发现错误
- 这个jquery代码是如何工作的
- 代码在angular中未按预期工作
- JavaScript代码未按预期工作
- 为什么jQuery代码段在没有IFrame的情况下可以工作,而在有IFrame时却不能工作
- 谷歌地图自动完成,即使使用工作代码也无法工作
- 需要 RepeatBox 及其行单击事件的工作代码才能在 smartface.io 中跳转到相应的页面上
- 任何人都可以指出我的工作代码或完整的概念图,用于 Angular2 中的 ViewMetadata
- 为什么我可以'不要对这个工作代码进行jsFiddle处理
- 工作代码带来错误addEventListener不是一个函数
- 需要修改此工作代码以在新窗口/选项卡中打开
- jQuery:如何计算和显示列的总和(部分工作代码)
- D3js缩放/拖动在我的代码中不再工作(+代码示例)