javascript - wyciągnięcie danych z javascript

0

Witam,
Mam problem z wyciągnięciem danych z mojego pliku javascript. Już nie mam sił do tego, nie wiem jak się odwołać do wartości Maxpowervoltage, znaczy się do jego value. Mam dwie listy rozwijane : wybieram typ i model i nie wiem jak wyciągnąć te dane.

Napisałem coś takiego

$('select[name=modelSelect]').on('change', function(){
	if( $(this).val() != '')   
		console.log($(this).val());{ 
		for (index = 0; index < producent.length; ++index)  {		
			if ($(this).val() == producent[index]["name"]){
			 $('td#vmppnom').text( producent[index]["Maxpowervoltage"]["value"] );

			};
		}         
	}            
});

A moja baza w javascript wygląda tak:

var solvis = {
    name: "Solvis",
	versions : {
        sv60255e: {
            name: "SV60-255 E",
	    CapacityRating:{
            	name: "Capacity rating",
            	value: 255 },
            ModulEfficiency:{
            	name: "Modul Efficiency",
            	value: 15.58 },
             Maxpowervoltage:{
            	name: "Max power voltage", 
            	value: 30.8 },
             Maxpowercurrent:{
            	name: "Max power current", 
            	value: 8.34 },
         },
    },
};

Zrzut ekranu jak to wygląda.
20a3fb0083.png

0

producent[index]["Maxpowervoltage"]["value"] )
tu mi się coś nie zgadza. Gdzie inicjalizujesz zmienną producent? I czemu nie odwołujesz się do versions i sv60255e? Coś pokręconego masz w kluczach.

0

zmienna inicjalizuje w odrębnym pliku producent.js

require("js/producent/solvis.js");

var producent = [];

producent.push(solvis);

a w głównym js mam dodane:

require("js/producent/producent.js");

Dodam że podobne działanie niżej mi chodzi, tylko tutaj nie wiem jak odwołać się do versions.

0

require("js/producent/solvis.js");
nie powinno być

require("./js/producent/solvis.js");

? (z kropką i slashem na początku)

weź wylistuj to za pomocą console.log wszystko po kolei, czy gdzieś nie jest undefined.

Dodam że podobne działanie niżej mi chodzi, tylko tutaj nie wiem jak odwołać się do versions.

Normalnie, tak jak odwoływałeś się do Maxpowervoltage:

producent[index]["versions"]["Maxpowervoltage"]["value"] 

Chociaz tutaj nawiasy kwadratowe są zbędne i można użyć kropki:

producent[index].versions.Maxpowervoltage.value

Jakby nie działalo to zobacz konsole błędów -zwykle w takich przypadkach są ciekawe błędy typu Cannot read property 'cośtam' of undefined, co dużo ułatwia.

0
$('select[name=modelSelect]').on('change', function(){
	if( $(this).val() != '')   
		console.log($(this).val());{ 
		for (index = 0; index < producent.length; ++index)  {		
			if ($(this).val() == producent[index]["name"])
				console.log(producent[index]["name"]);
			 {
				$('td#vmppnom').text( producent[index]["versions"]["Maxpowervoltage"]["value"] );
				
			};
		}         
	}            
});

Pierwszy console.log wypluwa mi "sv60255e", drugi: Uncaught TypeError: Cannot read property 'value' of undefined,

2

Twoje formatowanie nie odwierciedla rzeczywistej struktury obiektu, dlatego cię myli.

        sv60255e: {
            name: "SV60-255 E",
        CapacityRating:{
                name: "Capacity rating",

Albo zapomniałeś klamerki } po name: "SV60-255 E", albo CapacityRating jest dzieckiem sv60255e (ale jak jest dzieckiem powinien być bardziej wcięty).

Tak więc odwołujesz się do
solvis.versions.Maxpowervoltage.value
co zwraca błąd bo tam jest jeszcze numer wersji, i to siedzi tutaj:
solvis.versions.sv60255e.Maxpowervoltage.value

no i dobrze jest w takich sytuacjach skorzystać z konsoli błędów przeglądarki. Tam możesz wklejać kod (wkleiłem:

var solvis = {
    name: "Solvis",
    versions : {
        sv60255e: {
            name: "SV60-255 E",
        CapacityRating:{
                name: "Capacity rating",
                value: 255 },
            ModulEfficiency:{
                name: "Modul Efficiency",
                value: 15.58 },
             Maxpowervoltage:{
                name: "Max power voltage", 
                value: 30.8 },
             Maxpowercurrent:{
                name: "Max power current", 
                value: 8.34 },
         },
    },
};

i zobaczyłem czym jest solvis dokładnie (można chodzić po właściwościach, nawet myszą).

0

@jarecki16 - zapoznaj się z działaniem forum przed postowaniem. Posty bez tagów <code=nazwa_jezyka> tu kod </code> będę usuwał.

1

Już rozwiązałem problem troszkę zmieniając kod.


$('select[name=angleSelect]').on('change', function(){
	if( $(this).val() != '');
	{
		for (index = 0; index < cities.length; ++index) {
		//	console.log(cities[index]["name"]);
			if ($('#citySelect').val() == cities[index]["name"])
			 {
				$('td#tmax').text( cities[index]["extremes"][$(this).val()]["max"]);
				$('td#tmin').text( cities[index]["extremes"][$(this).val()]["min"]);
			};
		}
	}
});

Wielkie podziękowania dla LukeJL za naprowadzenie na dobrą drogę i cenne wskazówki.
PS: ok dzek69 będe pamiętał

1 użytkowników online, w tym zalogowanych: 0, gości: 1