HTMLページの要素をクリックするとこのエラーが表示されます。'length'のプロパティを読み取ることができず、なぜ私は分かりません
example.js:26 Uncaught TypeError: Cannot read property 'length' of undefined
at HTMLAnchorElement.<anonymous> (example.js:26)
at HTMLElement.dispatch (jquery-3.2.1.min.js:1623)
at HTMLElement.q.handle (jquery-3.2.1.min.js:1585)
(anonymous) @ example.js:26
dispatch @ jquery-3.2.1.min.js:1623
q.handle @ jquery-3.2.1.min.js:1585
ここにjavascriptの部分があります。
$(function() { //when the DOM is ready
var times; //declare global variable
$.ajax({ //set up request
beforeSend: function (xhr) { //before requesting data
if (xhr.overrideMimeType) { //if supported
xhr.overrideMimeType("application/json"); // set MIME to prevent errors
}
}
});
//funciton that collect data from the json file
function loadTimetable() { //decalre function
$.getJSON('data/example.json') //try to collect json data
.done(function (data) { //if succesful
times = data; //store in variable
}).fail(function() { //if a problem: show message
$('#event').html('Sorry! we couldnt load your time table at the moment');
});
}
loadTimetable(); //call the function
//CLICK ON TEH EVENT TO LOAD A TIME TABLE
$('#content').on('click', '#event a', function (e) { //user clicks on place
e.preventDefault(); //prevent loading page
var loc = this.id.toUpperCase(); //get value of id attr
var newContent = "";
for (var i = 0; i < times[loc].length; i++) { // loop through sessions
newContent += '<li><span class = "time">' + times[loc][i].time + '</span>';
newContent += '<a href = "descriptions.html#';
newContent += times[loc][i].title.replace(/ /g, '-') + '">';
newContent += times[loc][i].title + '</a></li>';
}
$('#sessions').html('<ul>' + newContent + '</ul>'); // Display Time
$('#event a.current').removeClass('current'); // update selected link
$(this).addClass('current');
$('#details').text('');
});
//CLICK ON A SESSION TO LEAD THE DESCRIPTION
$('#content').on('click', '#sessions li a', function (e) { //click on session
e.preventDefault(); // prevent loading
var fragment = this.href; //title is in href
fragment = fragment.replace('#', ' #'); //Add Space before #
$('#details').load(fragment); //to load info
$('#sessions a.current').removeClass('current'); //update selected
});
//CLICK ON PRIMARY NAVIGATION
$('nav a').on('click', function (e) { //click on nav
e.preventDefault(); //prevent loading
var url = this.href; //get UR: to load
$('nav a.current').removeClass('current');
$(this).addClass('current');
$('#container').remove(); //remove old
$('#content').load(url + ' #container').hide().fadeIn('slow'); // add new
});
});
私が何か間違ったことは、私が正常に動作しますが、私はちょうど私は何を把握することはできません同様のプロジェクトをオフに働いているので、私は私のプロジェクトフォルダ内の他のファイルを参照していますように、間違いなくあると思います間違っている。問題を修正するための鍵は、あなたのタイトルで投稿していなかったエラーメッセージの部分を読んでいる
'times [loc]'は 'undefined'です。 –
26行目のどれですか? –
エラーは、 'times'変数が定義されていないことを示しています(forループで参照したとき)。あなたはどこかでそれを定義しましたか? –