Uncaught TypeError: Cannot read property x undefined
Obtenir l'erreur ci-dessus dans le navigateur Chrome de la console alors que le script fonctionne et génère le droit de sortie, me demande comment je peux me débarrasser de cette erreur et ce qui en est la cause.
JSFiddle: http://jsfiddle.net/wJUeP/
Code HTML:
<ul id="menu"></ul>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
Code JS:
$(function(){
var data = [{"weekending":"09\/10\/2013","jobs":[{"jobnumber":"1001","jobaddress":"Test1001","employees":[{"employeenumber":"1","name":"James Blabla","class":"FHM","notes":"xx","nt-wkmon":"2","t12-wkmon":"5","dt-wkmon":"4","status-wkmon":"Public Holiday","startTime-wkmon":"4","finishTime-wkmon":"6","nt-wktue":"7"}]},{"jobnumber":"1002","jobaddress":"Test1002","employees":[{"employeenumber":"1","name":"Cameron Le","class":"FHQ","notes":"xx","nt-wkmon":"2","t12-wkmon":"5","dt-wkmon":"4","status-wkmon":"Public Holiday","startTime-wkmon":"4","finishTime-wkmon":"6","nt-wktue":"7"},{"employeenumber":"2","name":"David Le","class":"FHQ","notes":"xx","nt-wkmon":"2","t12-wkmon":"5","dt-wkmon":"4","status-wkmon":"Public Holiday","startTime-wkmon":"4","finishTime-wkmon":"6","nt-wktue":"7"}]},{"jobnumber":"1003","jobaddress":"Test1003","employees":[{"employeenumber":"1","name":"Nick G","class":"sdf","notes":"sdf","nt-wkmon":"2","t12-wkmon":"5","dt-wkmon":"4","status-wkmon":"Public Holiday","startTime-wkmon":"4","finishTime-wkmon":"6","nt-wktue":"7"}]}]}];
for(var i = 0, j = data[0].weekending.length; i<j; i++) {
rootMenu = data[0].jobs[i];
$("#menu").append("<li id='job_" + rootMenu.jobnumber + "'>" + rootMenu.jobnumber);
if(rootMenu.hasOwnProperty("employees")) {
$("#menu").append("<ul id='employees_job_" + rootMenu.jobnumber + "'>");
for(var n = 0, m = rootMenu.employees.length; n<m; n++) {
var subMenu = rootMenu.employees[n];
if(subMenu.hasOwnProperty("name")) {
$("#employees_job_" + rootMenu.jobnumber).append("<li>" + subMenu.name + "</li>");
}
}
$("#menu").append("</ul>");
} else {
$("#menu").append("</li>");
}
}
});
Note: je suis toujours dans la phase de développement de mon application et j'ai la possibilité de modifier et de manipuler la structure des données, si intégré les données JSON est de mauvaise qualité je peux le changer, les données réelles sont stockées dans un fichier XML, puis lu par PHP et délivrée sous forme de JSON.
- cache
$("#menu")
dans une variable, en dehors de la boucle .. il permettra d'améliorer les performances - Fait, bravo pour cela.
Vous devez vous connecter pour publier un commentaire.
pour la condition de boucle est incorrect.
vous avez utilisé
j = data[0].weekending.length
qui est égal à 10 et que vous êtes une itération sur ladata[0].jobs
objet qui ne dispose que de 3 emplois. Vous êtes une itération plus de 3 fois au cours de la emplois et, par conséquent, vous obtenez l'erreur.la caisse du violon http://jsfiddle.net/wJUeP/7/
L'erreur est ici:
C'est de retour de 10, ce qui est la longueur de la chaîne dans le weekending property == 10 ("09/10/2013")
Je pense que vous avez besoin de cette place: