2016-08-18 132 views
2

我是新來的Javascript和Jquery,剛開始學習,我從其他網站複製代碼並做了一些細微的更改,我試圖更新計時器時點擊圖標,但我收到了這個錯誤: - Uncaught TypeError: Cannot read property 'split' of undefined無法獲得跨度值

找到後,我看到變量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> 
+0

什麼是跨度?是那個var?你可以添加HTML或小提琴嗎? – fernando

+0

@maky span是一個html,我不能添加到小提琴,它不會工作,因爲我混合PHP。 – NickyMan

+0

爲什麼不''$(expiryid).html()。split(':')'? – Abhi

回答

1

你的HTML是<span id="expire_4">06:51</span>但您要查詢var myTime = $(expiryid+ ' span').html();哪裏expiryid = '#expire_'+i。問題是您的查詢與您的代碼不符。您的查詢表明您希望有一個ID爲expire_<number>的元素具有子範圍。你有什麼是跨度爲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*/ 
     } 
+0

我試過了,但是我收到了這個錯誤。 '(index):52未捕獲的TypeError:expiryid.html不是函數' – NickyMan

+0

@NickyMan Yea在** Edit **'myTimeEl.html(ts [1] +「:」+ ts [2] );'是更新。你不能在字符串上使用'.html'!你需要一個jQuery對象,像我更新的功能 – scrappedcola

+0

現在我明白了!謝謝!我一直在想弄清楚你在說什麼。 – NickyMan