Javascript 用于检测选项值的代码未按预期工作
我试图用javascript进行一些字符串比较。我看过一些教程和示例,但它们似乎不起作用。我错过了一些基本的东西 尝试1Javascript 用于检测选项值的代码未按预期工作,javascript,html,compare,Javascript,Html,Compare,我试图用javascript进行一些字符串比较。我看过一些教程和示例,但它们似乎不起作用。我错过了一些基本的东西 尝试1 function addAspect(aspect) { var print = document.createElement('p'); var ptext; if (aspect == "Option1") ptext = document.createTextNode("This is option1"); } 不起作用 然后我找到了这个例子
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>
函数addAspect()
{
var print=document.createElement('p');
var-ptext;
var aspect=document.getElementById(“aspectResult”).value;
如果(方面==“选项1”){
ptext=document.createTextNode(“这是option1”);
}
print.appendChild(ptext);
document.getElementById(“mainBlock”).appendChild(打印);
}
选择1
 
有什么建议吗?您的函数创建了一个文本节点,但没有对其执行任何操作,因此您的代码似乎什么都没有执行。您需要将文本节点附加到DOM中的某个元素:
document.body.appendChild(ptext);
您的完整代码在IE9、Firefox4和Chrome11中运行良好。请参阅。如果您试图在段落中添加
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
}
}
首先,介绍一下下拉列表的工作原理:
<select id="aspectResult">
<option value="Option1">Option1</option>
</select>
然后,创建包含文本节点的
元素:
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);
}
能否显示aspectResult的html?在if语句前的一行中对aspect发出警报,并查看弹出窗口中的内容-警报(aspect);选项1-一个选项,这样hings就不会混淆。它在一个元素中。谢谢警告是有效的,当你说“不起作用”时,它会说“选项1”,这是什么意思?我已经这么做了,我只是没有给你看这部分。我已经将它正确地添加到了主体中——我已经用一个随机字符串而不是element@user:您应该粘贴完整的代码-很明显,到目前为止您发布的代码没有任何问题。完整代码(我无法回答自己的问题)函数addAspect(){var print=document.createElement('p');var ptext;var aspect=document.getElementById(“aspectResult”).value;if(aspect==“Option1”)ptext=document.createTextNode(“这是Option1”);}很抱歉,我忘了输入将其添加到跨度的行,但这些行是above@user:您可以编辑问题以将此代码包含在相关部分。
print
在ECMAScript中既不是保留字,也不是将来的保留字。@Andy E:抱歉,更正。“print”在某些环境中使用(而且它也弄错了语法高亮),所以避免它可能更安全。@user291652:你看了最后两行代码了吗?我没有看到你问题中的那两行……我有这些行,如果你看下面,你会看到一个抽象的代码(忽略你无法访问的敏感信息)
var container = document.getElementById('mainBlock');
if (txt) {
p.appendChild(txt);
container.appendChild(p);
}