由于当前系统设计的限制,我需要将数据作为json传递给select元素,使用json中的'id'值重置select对象中的每个选项,并填充第二个select元素来自json的'sid'数据创建一对动态父子对选择元素。
但是我似乎无法成功解析选项值并将其推入数组以供以后的代码使用。
<select id="Sector">
<option value="{'id':'Fruit','sid':['Apple','Orange']}"></option>
<option value="{'id':'Veg','sid':['Tomato','Carrot']}"></option>
</select>
<script language="JavaScript" type="text/javascript">
var plist = document.getElementById('Sector');
var opts = plist.options;
var x =[];
for(i=0;i<opts.length;i++){
x.push(opts[i].value);
}
alert(x[0]['id']);
</script>
我做错了什么?我
答案 0 :(得分:1)
选项值为字符串。如果您想将它们视为JavaScript对象,则必须通过a JSON parser运行它们。
然后,您将遇到另一个问题,因为选项值为而不是JSON 。使用JSON Lint查找您的错误(除了您使用'
每个地方使用"
之外,我看不到任何其他内容。如果你正在处理JSON,你几乎应该总是用编程语言构建一个数据结构,然后通过JSON序列化程序运行它,手工制作JSON就会遇到麻烦。
答案 1 :(得分:1)
这一行是一个问题
x.push(opts[0]);
首先,我认为你需要做opts [0] .value,然后我认为你需要使用eval或JSON.parse把它变成一个对象。