Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
HTML href onclick不会触发javascript函数_Javascript_Html - Fatal编程技术网

HTML href onclick不会触发javascript函数

HTML href onclick不会触发javascript函数,javascript,html,Javascript,Html,我被要求更新我的问题,因此: 我在数据库中有记录,其中一些记录附带了wave文件名。我在数据库中循环,想在一个名为audiofile的标题下的列中写出“Play”一词。单击“播放”时,音频播放器播放文件,并将href单词改为“暂停”。当我的代码在这些记录中循环时,它为每个href分配了一个单独的ID。要调用启动音频播放器的函数,我需要发送一个audioControl ID(aControl)变量以及音频播放器的src source file(thissource)变量,从而在函数调用中使用&和。

我被要求更新我的问题,因此:

我在数据库中有记录,其中一些记录附带了wave文件名。我在数据库中循环,想在一个名为audiofile的标题下的列中写出“Play”一词。单击“播放”时,音频播放器播放文件,并将href单词改为“暂停”。当我的代码在这些记录中循环时,它为每个href分配了一个单独的ID。要调用启动音频播放器的函数,我需要发送一个audioControl ID(aControl)变量以及音频播放器的src source file(thissource)变量,从而在函数调用中使用&和。当我在按钮中使用onclick事件时,它会触发函数。但是,当我单击href链接时(这是我想要的,而不是一个按钮)什么也没有发生。我不确定代码的哪一部分是混乱的,因为我在网上找到了功能代码。提前感谢您提供的所有帮助

无论我做什么,我的href onclick都不会触发javascript函数。我从函数中取出了返回false并将其放入href中,但这也不起作用。我在按钮中放入了相同的onclick代码,它触发的效果非常好

HTML:

您可以尝试:

window.passvariables = function(aControl, thissource) {
  // Your code
};

我猜如果您的函数是在另一个函数中定义的(例如,在加载时执行)。因此“窗口”范围中没有定义“passvariables”。

我看到您更新了您的问题,这很好:) 首先,我建议您使用javascript库,它更易于操作DOM,并且您可以在此站点上轻松找到资源和帮助

下面是您的代码应该是什么样子的。我还没有测试过它,但它很好地概括了应该是什么样子

将其放入HTML代码的
部分

<script src="http://code.jquery.com/jquery-1.12.0.min.js"></script>
<script>
    $(document).ready(function() {
        //Assigning onClick function for every HTML tags having the css class "Play"
        $('.Play').click(function(){
            if($(this).html() == "Play"){
                //retrieving information about the audio
                var waveFile = $(this).attr("data-waveFile");
                var audioId = $(this).attr("data-audioId");
                //calling the startAudio function and assign the Audio object to myAudioObject
                var myAudioObject = startAudio(waveFile, audioId);
                if(myAudioObject){
                    //Audio started playing
                    $(this).html("Pause");
                }else{
                    alert("error while starting to play file");
                } 
            }else{
                var isPaused = pauseAudio(myAudioObject);
                if(isPaused){
                    //The pauseAudio function returned true so the audio is paused
                    $(this).html("Play");
                }else{
                    alert("error while pausing");
                }
            }
        });

        //Functions to manage audio Player
        function startAudio(waveFile, audioId){
        audioObject = document.getElementById("audio");
            audioObject.src = waveFile;
        audioObject.play();
        return true;
        }
        function pauseAudio(){
            //do whatever to pause
        audioObject = document.getElementById("audio");
        audioObject.pause();
            return true;
        }
    });
</script>

$(文档).ready(函数(){
//为每个具有css类“Play”的HTML标记分配onClick函数
$('.Play')。单击(函数(){
如果($(this.html()==“播放”){
//正在检索有关音频的信息
var波形文件=$(此).attr(“数据波形文件”);
var audioId=$(this).attr(“数据audioId”);
//调用startAudio函数并将音频对象分配给myAudioObject
var myAudioObject=startAudio(波形文件,音频ID);
if(myAudioObject){
//音频开始播放
$(this.html(“暂停”);
}否则{
警报(“开始播放文件时出错”);
} 
}否则{
var isPaused=pauseAudio(myAudioObject);
如果(i暂停){
//pauseAudio函数返回true,因此音频暂停
$(this.html(“Play”);
}否则{
警报(“暂停时出错”);
}
}
});
//管理音频播放器的功能
函数startAudio(波形文件,音频文件){
audioObject=document.getElementById(“音频”);
audioObject.src=波形文件;
audioObject.play();
返回true;
}
函数pauseAudio(){
//做任何事情来暂停
audioObject=document.getElementById(“音频”);
audioObject.pause();
返回true;
}
});
在HTML代码的
部分中,使用数据库数据构造表:

<table>
    <tr>
        <td>Song name</td>
        <td>Action</td>
    </tr>
    <tr>
        <td><%=WaveFile%></td>
        <td><a href="#" class="Play" data-waveFile="<%=WaveFile%>" data-audioId="<%=AudioId%>">Play</a></td>
    </tr>
</table>
<audio id="audio"></audio>

歌名
行动

注意
应该是循环中从数据库获得的值

只需单击
调用
密码变量
而不使用
返回
和have
密码变量
返回false

谢谢大家的帮助!我终于让它工作了!这是code:

yAudio =  "'yourAudio" & thisline & "'"
aControl = "'audioControl" & thisline & "'"                                     
thissource = "'/WaveFiles/" & RS.Fields("AudioIssues") &"'"
R"<td width=12  class=allprint><a href='#' class='Play' data-waveFile=" & thissource & " data-audioId=" & aControl & ">Play</a></td>"

// Call and play audio via JavaScript
$(document).ready(function()
{
    var aElement = document.createElement('audio');
    $('.Play').click(function()         
    {
        if($(this).html() == "Play")
            {
                var waveFile = $(this).attr("data-waveFile");
                var audioID = $(this).attr("data-audioId");
                aElement.setAttribute('src', waveFile);
                aElement.load()
                aElement.addEventListener("load", function() 
                {
                     aElement.play();
                     $(this).html("Stop");
                     $(".duration span").html(aElement.duration);
                     $(".filename span").html(aElement.src);
                }, true);

                aElement.play();
                $(this).html("Stop");
            }
            else
            {   
                 var waveFile = $(this).attr("data-waveFile");
                 var audioID = $(this).attr("data-audioId");
                 aElement.setAttribute('src', waveFile);
                 aElement.pause();
                 $(this).html("Play");
            }
        });
});
yAudio=“'yourAudio'&thisline&'”
aControl=“'audioControl'&thisline&'”
thissource=“”/WaveFiles/”&RS.Fields(“音频问题”)&“
R“
//通过JavaScript调用和播放音频
$(文档).ready(函数()
{
var aElement=document.createElement('audio');
$('.Play')。单击(函数()
{
如果($(this.html()==“播放”)
{
var波形文件=$(此).attr(“数据波形文件”);
var audioID=$(this).attr(“数据audioID”);
setAttribute('src',波形文件);
aElement.load()文件
AEElement.addEventListener(“加载”,函数()
{
aElement.play();
$(this.html(“Stop”);
$(“.duration span”).html(aElement.duration);
$(“.filename span”).html(aElement.src);
},对);
aElement.play();
$(this.html(“Stop”);
}
其他的
{   
var波形文件=$(此).attr(“数据波形文件”);
var audioID=$(this).attr(“数据audioID”);
setAttribute('src',波形文件);
aElement.pause();
$(this.html(“Play”);
}
});
});

控制台中是否存在JavaScript错误?另外,“&aControl&“不是有效的HTML ID。aControl和YAudio是变量,因为我有多个实例,因为链接基于数据库中的记录。没有错误,它不会触发函数。我编辑了我的答案,请看一看,现在应该可以工作了。如上所述,aControl和YAudio是变量,因为我有多个实例,因为链接基于数据库中的记录。改变你的音频[方法]();你的音频(方法);也不做什么。谢谢你,你说得对,我不需要用退货。我改变了这个想法,希望这能成为问题所在,但它仍然不起作用
<table>
    <tr>
        <td>Song name</td>
        <td>Action</td>
    </tr>
    <tr>
        <td><%=WaveFile%></td>
        <td><a href="#" class="Play" data-waveFile="<%=WaveFile%>" data-audioId="<%=AudioId%>">Play</a></td>
    </tr>
</table>
<audio id="audio"></audio>
yAudio =  "'yourAudio" & thisline & "'"
aControl = "'audioControl" & thisline & "'"                                     
thissource = "'/WaveFiles/" & RS.Fields("AudioIssues") &"'"
R"<td width=12  class=allprint><a href='#' class='Play' data-waveFile=" & thissource & " data-audioId=" & aControl & ">Play</a></td>"

// Call and play audio via JavaScript
$(document).ready(function()
{
    var aElement = document.createElement('audio');
    $('.Play').click(function()         
    {
        if($(this).html() == "Play")
            {
                var waveFile = $(this).attr("data-waveFile");
                var audioID = $(this).attr("data-audioId");
                aElement.setAttribute('src', waveFile);
                aElement.load()
                aElement.addEventListener("load", function() 
                {
                     aElement.play();
                     $(this).html("Stop");
                     $(".duration span").html(aElement.duration);
                     $(".filename span").html(aElement.src);
                }, true);

                aElement.play();
                $(this).html("Stop");
            }
            else
            {   
                 var waveFile = $(this).attr("data-waveFile");
                 var audioID = $(this).attr("data-audioId");
                 aElement.setAttribute('src', waveFile);
                 aElement.pause();
                 $(this).html("Play");
            }
        });
});