2017-10-06 29 views
0

我在試圖收藏夾列表添加到音板的早期作品是(我已經得到了localStorage的東西的工作)。我的音頻工作方式是從按鈕中獲取ID並將.mp3添加到它然後播放它,這是可行的。我的代碼就是當你按下一個按鈕,它需要它的ID,並創建另一個按鈕,插入該ID到它應該發揮的聲音相同的方式,其他按鈕做,但事實並非如此。有任何想法嗎?代碼實際上是相同的,但只是在.append創建按鈕時似乎不會播放聲音。使用追加插入身份證件和有聲演

相關favorite.js的Javascript

//audio 
 
var audios = Array.prototype.map.call(
 
    document.getElementsByName("names"), 
 
    function(el) { 
 
    var audio = new Audio(); 
 
    var src = "mp3/" + el.id + ".mp3"; 
 
    el.onclick = function() { 
 
     audio.src = src; 
 
     audio.play(); 
 
    }; 
 
    return audio; 
 
    }); 
 

 
//favorited sound 
 
function reply_click(clicked_id) { 
 
    alert("Added to Favorites"); 
 
    $('#add').append('<span><a href="#/" id="' + clicked_id + '" name="names" class="buttonsf">Sound1</a></span>'); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div> 
 
    <a href="#/" id="Sound1" onClick="reply_click(this.id)">Sound1</a> 
 
</div> 
 
<div id="add"> 
 

 
</div> 
 
<script type="text/javascript" src="favorite.js"></script>

+0

的第一個值'onclick'是一個事件,你不能傳遞一個ID給它 –

回答

0

傳遞給Click事件中值應採取Event

因此,改變onclick="reply_click(this.id)"onclick="reply_click(event)"該事件將傳遞給函數。

然後從clicked_id改變功能參數e(或你希望它被稱爲表示它是一個事件什麼都),您可以通過使用e.currentTarget.id和插入訪問該ID。

硒我下面的例子:

//audio 
 

 
function playAudio(e) { 
 
    let el = e.currentTarget 
 
    var audio = new Audio(); 
 
    var src = "mp3/" + el.id + ".mp3"; 
 
    audio.src = src; 
 
    audio.play(); 
 
    return audio; 
 
} 
 

 
function createListeners() { 
 
    let names = document.getElementsByName("names") 
 
    for (let i = 0; i < names.length; i++) { 
 
    let name = names[i] 
 
    name.removeEventListener('click', playAudio) 
 
    name.addEventListener('click', playAudio) 
 
    } 
 
} 
 

 
document.addEventListener('DOMContentLoaded', e => { 
 
    createListeners() 
 
}) 
 

 
//favorited sound 
 
function reply_click(e) { 
 
    alert("Added to Favorites"); 
 
    $('#add').append('<span><a href="#/" id="' + e.currentTarget.id + '" name="names" class="buttonsf">Sound1</a></span>'); 
 
    createListeners() 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div> 
 
    <a href="#/" id="Sound1" onClick="reply_click(event)">Sound1</a> 
 
</div> 
 
<div id="add"> 
 

 
</div> 
 
<script type="text/javascript" src="favorite.js"></script>

+0

這似乎沒有任何工作。我添加了一個頁面到我的網站,如果你想看看它https://www.randommemes.website/open.html它用你給的代碼。如果你檢查元素後的「點擊添加到收藏夾」被按下,你可以同時看到兩個底部按鈕具有完全相同的代碼,但只有第一個作品 –

+0

當我點擊鏈接它會創建這樣的:'This was made with .append and doesnt work'那是正確的輸出? –

+0

是的,做作品的是完全一樣的東西。 –