我是 Javascript 和 Jquery 的新手,刚开始学习,我从其他网站复制代码并做了一些细微的改动,我试图在点击图标时更新计时器,但我收到了这个错误:-
未捕获的类型错误:无法读取未定义的属性“split”
找到后,我看到变量 myTime 未定义。它没有获得跨度值。这是我的代码:-
function updateTimer(expiryid) {
var myTime = $(expiryid+ ' span').html();
console.log(myTime);
var ss = myTime.split(":");
var dt = new Date();
dt.setHours(0);
dt.setMinutes(ss[0]);
dt.setSeconds(ss[1]);
var dt2 = new Date(dt.valueOf() + 1000);
var temp = dt2.toTimeString().split(" ");
var ts = temp[0].split(":");
expiryid.html(ts[1]+":"+ts[2]);
}
function initialize() {
// Some un-related code up here
google.maps.event.addListener(marker, 'click', (function(marker, i) {
return function() {
infoWindow.setContent(infoWindowContent[i][0]);
infoWindow.open(map, marker);
//console.log('expire_'+i);
updateTimer('#expire_'+i);
}
})(marker, i));
}
</script>
<span id="expire_4">06:51</span>
最佳答案
你的html是<span id="expire_4">06:51</span>
但是您正在尝试查询 var myTime = $(expiryid+ ' span').html();
其中expiryid = '#expire_'+i
.问题是您的查询与您的代码不匹配。您的查询表明您希望有一个 ID 为 expire_<number>
的元素有一个 child 跨度。您拥有的是 ID 为 expire_<number>
的跨度.更新查询以获取 span 元素作为 $(expiryid)
你应该可以开始了。
编辑 我还注意到您正在尝试更新变量的 html。将整个函数更新为:
function updateTimer(expiryid) {
var myTimeEl = $(expiryid); /* create jquery object*/
var myTime = myTimeEl.html(); /*get the date string*/
console.log(myTime);
var ss = myTime.split(":");
var dt = new Date();
dt.setHours(0);
dt.setMinutes(ss[0]);
dt.setSeconds(ss[1]);
var dt2 = new Date(dt.valueOf() + 1000);
var temp = dt2.toTimeString().split(" ");
var ts = temp[0].split(":");
myTimeEl.html(ts[1]+":"+ts[2]); /*add new string to element using jquery objct*/
}
关于javascript - 无法获取跨度值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39024441/