Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么JSONObject[i].类型未定义?_Javascript_Jquery_Html_Jsonobject - Fatal编程技术网

Javascript 为什么JSONObject[i].类型未定义?

Javascript 为什么JSONObject[i].类型未定义?,javascript,jquery,html,jsonobject,Javascript,Jquery,Html,Jsonobject,当我单击(onclick=“changeTyp”)时,支持将值更改为我的单击间隔。但是它在jsonObjects[i]上表示未定义。 也许我必须将jsonObjects[I]发送到changeType函数? 有人能给我一个提示我该怎么做吗 我声明了jsonObjects: var jsonObjects = []; function populateTypes() { for(i = 0; i < jsonObjects.length; i++) { if(

当我单击(
onclick=“changeTyp”
)时,支持将值更改为我的单击间隔。但是它在
jsonObjects[i]上表示未定义。
也许我必须将
jsonObjects[I]
发送到
changeType
函数? 有人能给我一个提示我该怎么做吗

我声明了jsonObjects:

var jsonObjects = []; 

function populateTypes() {

    for(i = 0; i < jsonObjects.length; i++) {

        if(availableTypes.indexOf(jsonObjects[i].type) < 0) {

            availableTypes.push(jsonObjects[i].type);
            $("#changetotypes").append('<li><a href="#" onclick="changeType(\'' + jsonObjects[i].type + '\')">' + jsonObjects[i].type + '</a></li>');
       } 
    }
}

function changeType(type) {

    $( "#currenttype" ).html("Aktuell Typ: " + jsonObjects[i].type);
}
<li>
    <a href="#"><span id="currenttype" title=""></span></a>
    <ul id="changetotypes"></ul>
</li>
"c3000": {"x": 675, "y": 269, "plan":1, "name":"c3000", "img":"sensor3.png", "added":"datetime", "type":"c", "interval":"0", "comment":"enmassatext", "active":true, "value":"4c", "radie":false, "alarm":false},
"r3002": {"x": 223, "y": 355, "plan":1, "name":"r3002", "img":"sensor2.png", "added":"datetime", "type":"r", "interval":"6", "comment":"enmassatext", "active":true, "value":"-4c", "radie":false, "alarm":true},
"r3003": {"x": 300, "y": 100, "plan":1, "name":"r3003", "img":"sensor1.png", "added":"datetime", "type":"e", "interval":"3", "comment":"enmassatext", "active":false, "value":"15c", "radie":false, "alarm":false},
退房:

您的JSON是一个对象,而不是一个数组,下面是如何循环对象的属性:

for(var i in jsonObjects) {

    if(availableTypes.indexOf(jsonObjects[i].type) < 0) {

        availableTypes.push(jsonObjects[i].type);
        $("#changetotypes").append('<li><a href="#" onclick="changeType(\'' + jsonObjects[i].type + '\')">' + jsonObjects[i].type + '</a></li>');
   } 
}

这是因为您试图循环一个不存在的数组结构。JSON定义的对象包含一组对象,而不是一个对象数组。因此,不是:

var jsonObject = [obj, obj, obj];
最终得到的JS结构是:

var jsonObject = { c3000: obj, r3002: obj, r3002: obj};
(我不知道为什么要在顶部将
jsonObjects
声明为数组。)

因此,您应该使用的循环是:

// var your loop variables or you'll end up in trouble
for (var k in jsonObjects) {
  var type = jsonObjects[k].type;
  if (availableTypes.indexOf(type) < 0) {
    availableTypes.push(type);
    $('#changetotypes').append('<li><a class="typechange" data-type="' + type + '">' + type + '</a></li>');
  }
}

好的,这就是你的代码。但是如何保存新的单击类型(间隔)?我想保存新的点击/选择类型(间隔)?我不明白。你的问题没有提到类似的东西。保存类型在哪里?什么是
interval
?抱歉,Andy,我的意思是将新类型值保存到我的jsonObject文件中。间隔是“类型”。这是一个完全不同的问题。如果你想不出答案,再发一个问题。
// var your loop variables or you'll end up in trouble
for (var k in jsonObjects) {
  var type = jsonObjects[k].type;
  if (availableTypes.indexOf(type) < 0) {
    availableTypes.push(type);
    $('#changetotypes').append('<li><a class="typechange" data-type="' + type + '">' + type + '</a></li>');
  }
}
$(document).on('click', '.typechange', function (e) {
  e.preventDefault();
  var type = $(this).data('type');
  $('#currenttype').html('Aktuell Typ: ' + type);
});