Ajax请求文本在DOM中闪烁

Ajax request text flashes in the DOM

本文关键字:闪烁 DOM 请求 文本 Ajax      更新时间:2023-09-26

我遇到的问题是,从下拉菜单中选择一个项目后,我发出的AJAX请求会闪烁。从闪烁的文本来看,请求似乎提取了正确的信息。

它的工作方式应该是将鼠标悬停在下拉菜单上,当点击锚标签时,显示电影类型。

我认为现在发生的事情是,在做出另一个选择之前,我不会坚持那个流派,如果是这样的话,在选择一个新的流派之前,我如何保持流派的价值?如果不是因为我做错了什么?

我从代码中删除了所有的"绒毛",所以我们只剩下骨头了。

HTML:

<!DOCTYPE html>
<html lang="en">
<head>
    <script src="script.js"></script>
    <style>
        .dropdown{
            width: 151px;
        }
        .dropbtn{
            width: 150px;
            height: 30px;
            border: 1px solid black;
            border-radius: 2px;
            background: white;
        }
        a{
            display: block;
            background-color: lightgreen;
            width: 148px;
            height: 30px;
            text-align: center;
            text-decoration: none;
            padding-top: 10px;
            border-bottom: 1px solid black;
            border-right: 1px solid black;
            border-left: 1px solid black;
        }
        a:hover{
            background-color: lightblue;
        }
        .content{
            display: none;
        }
        .dropdown:hover .content{
            display: block;
        }
    </style>
</head>
<body onload='movieScript()'>   
    <div class="dropdown">
        <button class="dropbtn">Select</button>
        <div class="content">
            <a class="anchor" href="" onclick="generateMovies('Comedy')">Comedy</a>
            <a class="anchor" href="" onclick="generateMovies('Action')">Action</a>
            <a class="anchor" href="" onclick="generateMovies('Biography')">Biography</a>
            <a class="anchor" href="" onclick="generateMovies('Drama')">Drama</a>
            <a class="anchor" href="" onclick="generateMovies('Crime')">Crime</a>
        </div>
    </div>
    <div id="selectedMovies"></div>
</body> 
</html>

JS:

var titles = [];//Will hold an array of titles
var imgs = [];//Will hold an array of imgs
var pos = 0;//Global position indicator which will be shared by all global arrays
movieScript = function(){
    var movieData = "http://test.frontendhero.nl/movie-challenge/movies.json";
    var myRequest;
    //Test if XMLHttpRequest is available in active browser
    try{
        myRequest = new XMLHttpRequest();
    }
    catch(e){
        try{
            myRequest = new ActiveXObject("Msxml2.XMLHTTP");
        }catch(e){
            try{
                myRequest = new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch(e){
                alert("Something broke!");
                return false;
            }
        }
    }
    myRequest.onreadystatechange = function(){
        if(myRequest.readyState === 4 && myRequest.status === 200){              
            var jsonObj = JSON.parse(myRequest.responseText);//Grabs json object
            var data = jsonObj.data; //Grabbing data objects from json
            var assets; //Will hold array of data objects
            var movies =[]; //Array for actionMovie objects
            var DOM = document.getElementById('selectedMovies');
            generateMovies = function(userGenre){
                //Outer level of json
                for(var key in data){
                    assets = data[key].assets;
                    //Movie data of the json file cross checked with user selected genre
                    for(var x in assets){
                        if(assets[x].genre === userGenre){
                            movies[x] = assets[x];
                        }
                    }
                }
                //Add each element to an array of titles and imgms
                for(var key in movies){                                   
                    DOM.innerHTML = movies[key].title + movies[key].img;
                }
            }
        }
    }
    myRequest.open("GET", movieData, true);
    myRequest.send();
};

感谢您的帮助。

单击链接时,链接到href URL,空URL表示重新加载当前页面。您可以通过从onclick:返回false来防止这种情况发生

<a class="anchor" href="" onclick="generateMovies('Comedy'); return false;">Comedy</a>

或者您可以使用javascript:void(0) URL:

<a class="anchor" href="javascript:void(0)" onclick="generateMovies('Comedy')">Comedy</a>

或者您可以使用您发现的# URL。