2012-03-23 44 views
1

我正在研究一个脚本,该脚本从下拉选择列表中的选定选项抓取值并将其分配给对象。我遇到的唯一问题是它说我有一个空对象。使用普通javascript抓取选择值DOM

的.js文件如下:

var s = document.getElementById('mode'); 
alert(s.options[s.options.selectedIndex].value); 
function selectValue(){ 

    yo.newSelect(s.options[s.options.selectedIndex].value); 
    return true; 
} 

的HTML如下:

<div id="text_editing"> 
     <form action="javascript:;" method="post" onsubmit="editHomePage()"> 
     <select name="CYD" id="mode" onchange="selectValue()"> 
     <option value="Home">Home</option> 
     <option value="About">About</option> 
     <option value="Contact">Contact</option> 
     </select> 
<textarea name="sexyText" row="500" col=500">  
</textarea> 
<input value="submit" name="text_submit" type="submit" onclick="selectValue()"> 
     </form> 

我只是想找纯JS的解决方案。我对使用jQuery这样的小站点不感兴趣。

+0

1)在是什么浏览器,你测试此? - 2)NULL对象是Alert框的结果? – 2012-03-23 00:19:24

+0

Chrome。警报框根本不会弹出。我从firebug lite获得这个信息。 – VinceOmega 2012-03-23 00:32:48

回答

2

如果所有选项都有一个值,你可以简单的写:

alert(s.value); 

这将返回第一个选项(所以不适合与一个以上的选择了多个选择)的值。

顺便说一下,从你的听众,你可以这样做:

<input type="submit" onclick="selectValue(this)"> 

然后在功能:

+0

你提到的第一种方法我已经在不同的脚本上做过了,但是使用了数字并且它能够处理它们。我可能会这样做。我试着用你提到的另一种方法,但它只是告诉我'form'是未定义的。在那一刻,我举起双手,使我的价值观像以前一样。 – VinceOmega 2012-03-23 03:29:57

+0

表单中的所有表单控件都有一个* form *属性,用于引用它们所在的表单。如果它们不在表单中,则它将不具有有用的值。 – RobG 2012-03-23 05:42:14

1

看起来像最初一样,没有选择任何选项;因此,当页面第一次加载时,s.options[s.options.selectedIndex]将为空。

我会推荐使用Firefox的Firebug插件来浏览你的代码;您可以使用调试器轻松识别这些类型的问题。

+0

我实际上已将其用于Chrome。我尝试了你所说的做法,那就是默认选择“selected =”选项中的一个,但那也没有解决。 – VinceOmega 2012-03-23 00:30:37

+0

使用萤火虫,你应该能够知道哪个对象为空,并且selectedIndex的值是多少 – RMorrisey 2012-03-23 00:36:49

+0

是的,我检查了Chrome和Firefox上的Firebug上的DOM标签,它告诉我s是空的。我没有找到填充字符串值的方法,所以我只是创建了数值并遵循了RobG的建议。感谢你们俩! – VinceOmega 2012-03-23 03:47:11