2015-10-02 92 views
0

我想實現一個匿名回調函數。我寫的代碼非常棒,我知道。Javascript回調函數故障

打字介紹是一個範圍,它激活了具有給定參數的動畫.typed。我需要激活什麼,什麼不是,是最後一個通過id去除這兩個元素的函數。無法弄清楚如何。

<!-- Executes intro typing text --> 
<script> 
    document.getElementById('intro-button').onclick = function() { 
    $(function() { 
     $("#typing-intro").typed({ 
      strings: ["&emsp;INITSEG = DEF_INITSEG</br>&emsp;SYSSEG"], 
      typeSpeed: 0, 
      backDelay: 20, 
      loop: false, 
      loopCount: false, 
     }, function(){ 
      document.getElementById("intro-section").remove(); 
      document.getElementById("typing-intro").remove(); 
     }); 
     }); 
    } 
    ///script 
</script> 
+0

這是'typed.js'吧? – MinusFour

+0

你爲什麼要寫'
'而不是'
'? –

+0

是typed.js和Lister,我被告知這是很好的編程風格。查看它我錯了。感謝您的更正! –

回答

1

由於MinusFour指出,鍵入動畫功能並不需要一個回調函數作爲最後一個參數。相反,「回調」功能通過選項

傳遞給它。除了這個問題,還有很多你可以用代碼清理。由於您已經在使用jQuery,因此您可以清理事件處理程序。而不是document.getElementById('intro-button').onclick = function() { ... }你可以有$('#intro-button').click(function() { ... });。如果你把這個<script>放在<head>中,你會想把整個東西包裝在$(function() { ... })中,而不是陷入你的代碼中間。

最後,由於您在其他地方使用jQuery,而不是document.getElementById(「intro-section」)。remove();只需要$('#intro-section')。remove()。

因此,這將是這樣的:

$(function() { 
    $('#intro-button').click(function() { 
      $("#typing-intro").typed({ 
      strings: ["&emsp;INITSEG = DEF_INITSEG</br>&emsp;SYSSEG"], 
      typeSpeed: 0, 
      backDelay: 20, 
      loop: false, 
      loopCount: false, 
      callback: function(){ 
       $("#intro-section").remove(); 
       $("#typing-intro").remove(); 
      } 
     }); 
    }) 
}) 
+0

謝謝,新來的JS,這是關鍵。超級讚賞 –

+0

@Kaiido,我沒有意識到它是。謝謝(你的)信息。答案已更新。 – Alex

1

typed.js並不真正處理回調作爲單獨的參數。它的原型jQuery的擴展方法是:

$.fn.typed = function(option) { 

所以你必須把它作爲你的options對象callback關鍵的一部分。

$("#typing-intro").typed({ 
      strings: ["&emsp;INITSEG = DEF_INITSEG</br>&emsp;SYSSEG"], 
      typeSpeed: 0, 
      backDelay: 20, 
      loop: false, 
      loopCount: false, 
      callback: function(){ 
       document.getElementById("intro-section").remove(); 
       document.getElementById("typing-intro").remove(); 
      } 
     }); 
     }); 

還有爲DOMElement沒有remove方法,這是一個jQuery的事情。

$('#intro-section').remove(); 
$('#typing-intro').remove();