页面导航的if条件出现问题

issue in if condition for page navigation

本文关键字:问题 条件 if 导航      更新时间:2023-09-26
$( 'li' ).on( 'click', function( event ) {
            console.log("inside music player");
            var projIndex = $(this).index();
            selectedMedia=$(this).text();
            console.log("------"+projIndex);
            console.log("------"+selectedMedia);
            var extension = selectedMedia.substr( (selectedMedia.lastIndexOf('.') +1) );
            console.log("extension-----"+extension);
            if(extension=="mp3" || extension=="wav")
                {
                var musicLink="#musicPlay_page";
                var selectedLink = document.getElementById('mediaLink'); 
                selectedLink.href=musicLink;
                $('#musicPlay_page').add(playMusicList(selectedMedia));
                }                         
            else if(extension=="mp4")
                {
                var videoLink="#videoPlay_page";
                var selectedLink = document.getElementById('mediaLink'); 
                selectedLink.href=videoLink;
                $('#videoPlay_page').add(playVideoList(selectedMedia));
            }
        });

在上面的代码中,我需要根据我选择的媒体类型(mp3或mp4)导航到两个不同的页面。如果是mp3,那么它应该导航到musicPlay页面,如果是mp4,它应该导航到videoPlay页面。它工作得很好,当我点击列表中的第一个文件,即它导航到其他页面,但当我点击列表的第一个元素以外,它不导航到其他页面,而是在当前页面本身播放文件,请解决这个问题。

function onsuccess(files) {
        $('#media_list').remove();
        var d='<div id="media_list">';
        d += '<ul data-role="listview" style="list-style: none outside none;padding: 0;">'
            +'<div style="font-weight:bold;color:black;">';
        for(var i = 0; i < files.length; i++) {
            console.log("File Name is " + files[i].name); // displays file name
            if(files[i].isDirectory == false){      
                d+='<li style="vertical-align: top;">'
                    +'<a href="" id="mediaLink">'
                    +'<img src="/images/musicPlay_logo.jpg" id="musicPlay"/>'
                    +files[i].name
                    +'</a><hr color="black" size =1 width=500></li>';
            }
        }
        d+= '</div>';
        d+= '</ul>';
        d+= '</div>';
        $("#media_content").append(d);

}

这是我用来显示HTML内容的函数它显示媒体文件列表,你可以看到在'a'标签中我将href留空所以点击时它会进入点击功能根据我点击的文件格式它会进入if条件页面应该会打开

问题很简单。你在使用ID而不是类。id是唯一的,并且不应超过1个元素具有相同的id。这里您多次使用mediaLinkmusicPlay id, JavaScript只找到第一个匹配,因为根据定义,不应该有更多匹配。将id更改为类,这是可重用的标识符,如下所示:

d+='<li style="vertical-align: top;">'
    +'<a href="" class="mediaLink">'
    +'<img src="/images/musicPlay_logo.jpg" class="musicPlay"/>'
    +files[i].name
    +'</a><hr color="black" size =1 width=500></li>';

或者给ID添加一些唯一的东西,这样它就不会重复,比如循环计数器(i),如下所示:

d+='<li style="vertical-align: top;">'
    +'<a href="" id="mediaLink-'+i+'">'
    +'<img src="/images/musicPlay_logo.jpg" id="musicPlay-'+i+'"/>'
    +files[i].name
    +'</a><hr color="black" size =1 width=500></li>';

然后修改你的点击处理程序,使用类/id代替。没有相关的HTML代码,这就是我所能说的。如果您能提供HTML代码,我可能能够帮助您进一步修改处理程序的代码。

代替if(extension=="mp3" || extension=="wav")

尝试如果(extension.equals (mp3) | | extension.equals (wav))