Javascript 为文本字段指定id

Javascript 为文本字段指定id,javascript,html,Javascript,Html,我有一个表单,其中两个字段由一个下拉菜单生成。现在的问题是,我已经生成了一个字段,并试图获得两个字段,在第一个字段中显示价格,在第二个标记中显示产品标识。我的脚本只是显示价格,而不是id。由于缺乏知识,我被卡住了。我只是需要别人的帮助 JavaScript: function setOptions(chosen) { var selbox = document.myform.opttwo; selbox.options.length = 0; if (chosen ==

我有一个表单,其中两个字段由一个下拉菜单生成。现在的问题是,我已经生成了一个字段,并试图获得两个字段,在第一个字段中显示价格,在第二个标记中显示产品标识。我的脚本只是显示价格,而不是id。由于缺乏知识,我被卡住了。我只是需要别人的帮助

JavaScript:

function setOptions(chosen) {
    var selbox = document.myform.opttwo;
    selbox.options.length = 0;
    if (chosen == " ") {
        selbox.options[selbox.options.length] = new Option('Please select one of the options above first',' ');   }
        selbox.options[selbox.options.length] = new Option('100 Directory Submission', '$9.99', '1');
        selbox.options[selbox.options.length] = new Option('200 Directory Submission', '$19.99', '2');
        selbox.options[selbox.options.length] = new Option('300 Directory Submission','$29.99', '3');
    }
    document.myform.amount.value="";
    document.myform.hidden.value="";
}​
HTML:


首先选择上述任一选项
应付金额:
产品标识:
首先,代码中存在一些明显的问题,例如闭合大括号和未闭合大括号

这一行中有一个例子:

if (chosen == " ") {
        selbox.options[selbox.options.length] = new Option('Please select one of the options above first',' ');   }
编辑:情况不再如此

其次,您尝试创建的Options对象没有您尝试获取的“id”属性

所以你的代码

selbox.options[selbox.options.length] = new Option('100 Directory Submission', '$9.99', '1');
未获取“1”作为其id

构造函数是

new Option([text], [value], [defaultSelected], [selected])
但是,您可以通过在onchange处理程序中执行以下操作来获取元素的索引:

this.form.hidden.value=this.selectedIndex;
第三,如果您想继续在onchange标记中使用script,这通常是不鼓励的,那么您还必须设置隐藏输入的值

像这样:

onchange="this.form.amount.value=this.value; this.form.hidden.value=this.value;"
注意:上面这行会给你错误的值,只是说,但你得到了它的要点

我做了一把小提琴让你在里面玩,看看是怎么做的

我相信一些API文档总是井然有序的:

更新: 为了在每个选项上动态设置id,必须循环选择列表中的元素,如下所示:

for (var i=0; i<selbox.length; i++){
     selbox.options[i].setAttribute('id', 'hello'+i); 
}
现在,当您选择一个选项时,您的输入应该显示“hello0”、“hello1”、“hello2”、“hello3”

还有,我为你更新了小提琴


如果(selected==“”){selbox.options[selbox.options.length]=new Option('请首先选择上面的选项之一','');}您必须稍后关闭它,而且您缺少一个表单,据我所知,您没有调用setOptions();从任何地方来。我为你做了一把小提琴,你可以用它来回答你的问题:错误只是不小心写出来的。在我的实际代码中没有任何内容。@limelights我看到了你的代码,但它也没有给我产品id。我更新了小提琴,粘贴了错误的url。对不起!我已经更新了小提琴以更好地反映我的答案!抱歉,这可能会造成混乱!你的工作很出色,但这不是我要找的。更新后的脚本只给出所选的索引号。我不想要索引号码,我需要打印我想要的号码。希望你能理解。是的,我理解,但由于你的代码是现在,你将无法做到这一点。您需要做的是以编程方式或硬编码方式为每个选项分配一个id。您正在使用的API不支持您所需的。那么,如何将id硬编码到javascript中的每个选项?如果我不能给出id,那么我可能会选择不同的方式来显示类似的结果。
for (var i=0; i<selbox.length; i++){
     selbox.options[i].setAttribute('id', 'hello'+i); 
}
this.form.hidden.value=this[selectedIndex].id;