Javascript js对象问题
我使用一个对象来检查一组单选按钮是否有一个精确的值,如在“rule”对象上设置的值。以下是一个例子:Javascript js对象问题,javascript,object,Javascript,Object,我使用一个对象来检查一组单选按钮是否有一个精确的值,如在“rule”对象上设置的值。以下是一个例子: arr = {a:"1", b:"1", c:"1", c:"2"}; //that's my object rule var arr2={}; //here I create my second array with charged value $("#form_cont input:checked").each(function() { arr2[$(this).attr("n
arr = {a:"1", b:"1", c:"1", c:"2"}; //that's my object rule
var arr2={}; //here I create my second array with charged value
$("#form_cont input:checked").each(function()
{
arr2[$(this).attr("name")]=$(this).val();
});
//here I make the check
for (k in arr2)
{
if (typeof arr[k] !== 'undefined' && arr[k] === arr2[k])
{
$("#form_cont li[name$='"+k+"']").css('background-color', '');
}
else
{
$("#form_cont li[name$='"+k+"']").css('background-color', 'pink');
}
}
问题是当我必须检查“c”键时,我得到的是最后一个值(2),而不是正确的值,这可能是1或2
提前谢谢
ciao,h.一个对象上不能有两个名称相同的属性。因此,当javascript编译器看到行
arr={a:“1”,b:“1”,c:“1”,c:“2”}代码>自动将其更改为arr={a:“1”,b:“1”,c:“2”}
让c的最后一个定义覆盖第一个定义为了有多个值,arr
的属性c
需要是一个数组:
arr = {a:["1"], b:["1"], c:["1","2"]}; //that's my object rule
当然,您的有效性检查也必须更改以搜索新数组:
typeof arr[k] !== 'undefined' && contains(arr[k], arr2[k])
函数包含(a,obj){
对于(变量i=0;i
能否将第二个c键更改为d?不,很抱歉,c是可能采用值1或2的无线电名称:-(我可以在数组中设置c,在现有对象中设置concat吗?它可以工作吗?@Eric:谢谢你回答我是否修改for循环以获得c值?@haltman:不,你的其余代码应该可以正常工作。我在IE:typeof arr[k]!='undefined'&&contains(arr[k],arr2[k]中发现这一行有错误)你有什么办法解决它吗?@Eric Mickelsen我在IE7上测试过,错误为“未定义”为空或不是对象再次感谢ciao h。就像经常发生的问题一样,问题在另一点上感谢您的帮助
function contains(a, obj){
for(var i = 0; i < a.length; i++) {
if(a[i] === obj){
return true;
}
}
return false;
}