2016-08-18 4 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>の要素があることを期待していることを示唆しています。あなたはIDがexpire_<number>のスパンです。スパン要素が$(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

試しましたが、このエラーが発生しました。 '(インデックス):52 Uncaught TypeError:expiryid.htmlは関数ではありません。 ' – NickyMan

+0

@NickyManそうです、私のセクションは**編集**のmyTimeEl.html(ts [1] +": "+ ts [2] ); 'は更新です。文字列に '.html'を使うことはできません!!!あなたは関数を – scrappedcola

+0

に更新したようなjqueryオブジェクトが必要になりました。ありがとう!私は何を言っているのか把握しようとしています。 – NickyMan

関連する問題