Skip to content

Commit e7cd362

Browse files
committed
Resolve JS error when converting timestamps
TypeError: Cannot read property 'datetime' of undefined 1 File https://bnetdocs.org/a/BNETDocs.js line 2 col 680 in BNETDocs.fTimeToLocale 2 File https://bnetdocs.org/a/BNETDocs.js line 5 col 86 in BNETDocs.window.onload
1 parent 8f5c4ee commit e7cd362

File tree

1 file changed

+36
-30
lines changed

1 file changed

+36
-30
lines changed

src/static/a/BNETDocs.js

Lines changed: 36 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,37 @@ function BNETDocs() {
2626

2727
var self = this;
2828

29+
this.dateToString = function(x) {
30+
var y = '';
31+
switch (x.getDay()) {
32+
case 0: y += 'Sun'; break;
33+
case 1: y += 'Mon'; break;
34+
case 2: y += 'Tue'; break;
35+
case 3: y += 'Wed'; break;
36+
case 4: y += 'Thu'; break;
37+
case 5: y += 'Fri'; break;
38+
case 6: y += 'Sat'; break;
39+
}
40+
y += ', ';
41+
switch (x.getMonth()) {
42+
case 0: y += 'Jan'; break;
43+
case 1: y += 'Feb'; break;
44+
case 2: y += 'Mar'; break;
45+
case 3: y += 'Apr'; break;
46+
case 4: y += 'May'; break;
47+
case 5: y += 'Jun'; break;
48+
case 6: y += 'Jul'; break;
49+
case 7: y += 'Aug'; break;
50+
case 8: y += 'Sep'; break;
51+
case 9: y += 'Oct'; break;
52+
case 10: y += 'Nov'; break;
53+
case 11: y += 'Dec'; break;
54+
}
55+
y += ' ' + x.getDate() + ' ' + x.getFullYear();
56+
y += ' at ' + x.toLocaleTimeString();
57+
return y;
58+
};
59+
2960
this.fHookExternalAnchors = function() {
3061
for (var id in document.links) {
3162
var link = document.links[id];
@@ -77,41 +108,16 @@ function BNETDocs() {
77108
this.fTimeToLocale = function() {
78109
var timestamps = document.getElementsByTagName('time');
79110
for (var id in timestamps) {
80-
if (timestamps[id].attributes.datetime === undefined) continue;
111+
if (self.isNumeric(id) &&
112+
timestamps[id].attributes.datetime === undefined
113+
) continue;
81114
var d = new Date(timestamps[id].attributes.datetime.value);
82115
timestamps[id].innerText = self.dateToString(d);
83116
}
84117
};
85118

86-
this.dateToString = function(x) {
87-
var y = '';
88-
switch (x.getDay()) {
89-
case 0: y += 'Sun'; break;
90-
case 1: y += 'Mon'; break;
91-
case 2: y += 'Tue'; break;
92-
case 3: y += 'Wed'; break;
93-
case 4: y += 'Thu'; break;
94-
case 5: y += 'Fri'; break;
95-
case 6: y += 'Sat'; break;
96-
}
97-
y += ', ';
98-
switch (x.getMonth()) {
99-
case 0: y += 'Jan'; break;
100-
case 1: y += 'Feb'; break;
101-
case 2: y += 'Mar'; break;
102-
case 3: y += 'Apr'; break;
103-
case 4: y += 'May'; break;
104-
case 5: y += 'Jun'; break;
105-
case 6: y += 'Jul'; break;
106-
case 7: y += 'Aug'; break;
107-
case 8: y += 'Sep'; break;
108-
case 9: y += 'Oct'; break;
109-
case 10: y += 'Nov'; break;
110-
case 11: y += 'Dec'; break;
111-
}
112-
y += ' ' + x.getDate() + ' ' + x.getFullYear();
113-
y += ' at ' + x.toLocaleTimeString();
114-
return y;
119+
this.isNumeric = function(n) {
120+
return !isNaN(parseFloat(n)) && isFinite(n);
115121
}
116122

117123
window.onload = function() {

0 commit comments

Comments
 (0)