2014-09-25 2 views
0

html5의 오디오 관련 파일 작업 중입니다. 오디오 대기 중 즉시 재생하지 않음

나는 그것은 오디오를 변경 오디오

function Audioplay(id) { 
    var id=id.split('Symbols')[1]; 
    var FolderRedirect=id.split('')[0]; 

    $("#audio").get(0).pause(); 
    $("#audio").attr('src', ' '); 
    $("#audio").attr('src', 'assets/audio/'+Folder[FolderRedirect]+'/sound_'+id+'.mp3'); 
    $("#audio").get(0).play(); 
}; 

을 변경하려면 다음 함수를 사용하지만, 완전히 처음으로 재생됩니다. 즉시 재생할 수있는 방법 onclick? 감사합니다

답변

0

당신의 기능을 보면, 당신은 마지막 라인으로 play()를 호출하고 있습니다. 그것을 제거하고 대신 컨트롤로 사용중인 요소에 대한 클릭 핸들러로 추가하십시오.

가 고려해야 할 다른 정리가 있습니다

  • 기능 이름은 통상적으로 소문자로 시작 - 대문자로 시작하는 함수를 사용하면 하나를 만들 new 연산자를 사용한다는 것을 의미한다.
  • id을 인자로 전달하더라도 로컬 변수로 재 선언합니다.
  • 변수 본문에서 변수 Folder을 참조합니다. 따라서 그곳에서 일어나는 일에 대해 추론하기가 어렵습니다. folder 배열 (올바른 대소 문자를 유의하십시오)을 인수로 함수에 전달하거나 리디렉션 파생을 별도의 함수로 분리하는 것이 좋습니다.
  • jquery가 #audio 요소를 4 번 강제로 찾습니다. 대신 jQuery가 한 번만 찾아야하므로 로컬 변수에 저장하십시오.

    function playAudio($audio) { 
        $audio.get(0).play(); 
    } 
    
    function normalizeId(rawId) { 
        var idParts = id.split('Symbols'); 
        return idParts[1]; 
    } 
    
    function getFolderRedirectFromNormalizedId(normalizedId) { 
        return normalizedId.split('')[0]; 
    } 
    
    function getSourcePathFromId(id) { 
        var folders, folderRedirect, normalizedId; 
        folders = [/* Initialize your folder array */]; 
    
        normalizedId = normalizeId(id); 
    
        folderRedirect = getFolderRedirectFromNormalizedId(normalizedId); 
    
        return 'assets/audio/' + folders[folderRedirect] + '/sound_' + normalizedId + '.mp3'; 
    } 
    
    function initializeAudio(id) { 
        var src, $audio; 
        $audio = $("#audio"); 
        $audio.get(0).pause(); 
        $audio.attr('src', ' '); 
    
        src = getSourcePathFromId(id); 
        $audio.attr('src', src); 
    
        $('.control-you-want-to-click').click(function() { 
        playAudio($audio); 
        }); 
    } 
    
    initializeAudio(); 
    
    :

A는 기능을 재

관련 문제