javascript - 从 api 获取点击数据

标签 javascript jquery api

我从 API 中获取一些数据。我对 API 进行了两次调用,并将输出保存在变量中。现在我有两个链接 - 一个用于 Data1,另一个用于 Data2。如果我单击 Data1,则应加载第一个调用。单击Data2 显示应进行第二次调用。当有人访问该网站时,Data1 应该是默认显示的数据集。

我有一个几乎可行的解决方案:

    <script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
        <script>
            $(function(){
                $("#data1").click(function(e){
                    e.preventDefault();
                    var datasets = document.getElementById("datasets");
                    var html = '';
                    var i = 0;
                    var results = <?php echo json_encode($resultsD1) ?>;
                    for (const result of results) {
                        html += '<article class="dataset"><span class="title">' + result["title"] + '</span><div class="data-meta">';
                        html += '<span class="release">' + result["release"] + '</span></div></article>';
                        i++;
                    }
                    products.innerHTML = html;
                });
                $("#data2").click(function(e){
                    e.preventDefault();
                    var datasets = document.getElementById("datasets");
                    var html = '';
                    var i = 0;
                    var results = <?php echo json_encode($resultsD2) ?>;
                    for (const result of results) {
                        html += '<article class="dataset"><span class="title">' + result["title"] + '</span><div class="data-meta">';
                        html += '<span class="release">' + result["release"] + '</span></div></article>';
                        i++;
                    }
                    products.innerHTML = html;
                });
            });
        </script>

现在,如果我单击Data1,则会加载正确的数据。当我点击 Data2 时也是如此。但是如何在站点加载时将 Data1 设置为默认值呢?而且我的代码看起来构造很糟糕。我重复整个 for 循环两次...

最佳答案

<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
    <script>
        $(function(){
    function setData(dataset_type){
        var html = '';
                    var i = 0;
        var products = document.getElementById("datasets");
                    var results = <?php echo json_encode($resultsD1) ?>;
        if(dataset_type == 2){
            results = <?php echo json_encode($resultsD2) ?>;
        }
                    for (const result of results) {
                        html += '<article class="dataset"><span class="title">' + result["title"] + '</span><div class="data-meta">';
                        html += '<span class="release">' + result["release"] + '</span></div></article>';
                        i++;
                    }
                    products.innerHTML = html;
    }

    // Default Call onload for dataset 1
    setData(1);

            $("#data1").click(function(e){
                e.preventDefault();
                setData(1);
            });
            $("#data2").click(function(e){
                e.preventDefault();
                setData(2);
            });     
        });
    </script>

关于javascript - 从 api 获取点击数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57709728/

相关文章:

javascript - 如何为每个轨道添加播放和停止按钮?

api - 用于商业网站的 Google Analytics API

javascript - Visual Studio Mac appsettings.json 允许不显眼的 javascript

javascript - 为什么这个用于在 jQuery 中切换动画的三元运算符不起作用?

javascript - jQuery 中的可编辑文本框

javascript - 如何通过单击超链接来选中/取消选中复选框?

javascript - Jquery FadeIn FadeOut不断重复

javascript - jQuery 滑动侧边栏面板插件中的问题

c# - Windows Azure 服务管理 API 交换问题

javascript - Jquery Validator valid()函数在提交时不起作用