如何使获取动态链接JavaScript

如何使获取动态链接JavaScript,javascript,Javascript,我正在尝试使fetch('/fetchDataAll')动态。取决于单击的按钮。有人帮忙吗 JavaScript class DbApi { constructor() { } async getDbData() { const dataResponse = await fetch('/fetchDataAll') const dataJson = await dataResponse.json() return da

我正在尝试使
fetch('/fetchDataAll')
动态。取决于单击的按钮。有人帮忙吗

JavaScript

class DbApi {
    constructor() {

    }
    async getDbData() {
        const dataResponse = await fetch('/fetchDataAll')

        const dataJson = await dataResponse.json()

        return dataJson

    }
}


// the object that maps the data-fetcher attributes to their equivalent functions
const fetcherObject = {
    all: fetchAll,
    rookies: fetchRookies,
    ufra: fetchUrfa

};

const bestBtn = document.querySelector('.jsBestBtnList')

bestBtn.addEventListener("click", function (e) {
    let target = e.target;
    let fetchFn = fetcherObject[target.dataset.fetcher];
    if (fetchFn) { 
        fetchFn();

    }

});

let show = document.querySelector('#show')

const dbApi = new DbApi

function fetchAll(){
  dbApi.getDbData()
    .then(data => {
        show.innerHTML = "";
        let players = data.result; // Get the results

        show.innerHTML  = players.map(player => {

            let colorToChange = "";
            let plusMinusSign = "";
            let colorWhite = "#FFFFFF";


            if (player.scoreChange >= 0) {
                colorToChange = "#66FF13";
                plusMinusSign = "+";
            }
            else {
                colorToChange = "#D0021B";
                plusMinusSign = "";
            }

            return `<p style='color:${colorWhite}'>${player.playerName}</p>
            <p style='color:${colorWhite}'>${player.teamName}</p>
            <h3 style='color:${colorToChange}'>${plusMinusSign} ${player.scoreChange} %</h3>`
        }).join('')

    })
    .catch(function (error) {
        console.log(error);
    });
}
DbApi类{
构造函数(){
}
异步getDbData(){
const dataResponse=wait fetch('/fetchDataAll')
const dataJson=wait dataResponse.json()
返回数据JSON
}
}
//将数据获取程序属性映射到其等效函数的对象
常量fetcherObject={
全部:全部,
新秀:新秀,
ufra:fetchUrfa
};
const bestBtn=document.querySelector('.jsBestBtnList')
最佳BTN.addEventListener(“单击”,函数(e){
设target=e.target;
让fetchFn=fetcherObject[target.dataset.fetcher];
如果(fetchFn){
fetchFn();
}
});
let show=document.querySelector(“#show”)
const dbApi=新的dbApi
函数fetchAll(){
dbApi.getDbData()
。然后(数据=>{
show.innerHTML=“”;
让players=data.result;//获取结果
show.innerHTML=players.map(player=>{
让颜色改变=”;
让plusMinusSign=“”;
让colorWhite=“#FFFFFF”;
如果(player.scoreChange>=0){
colorToChange=“#66FF13”;
plusMinusSign=“+”;
}
否则{
colorToChange=“#D0021B”;
plusMinusSign=“”;
}
返回`

${player.playerName}

{ //…代码的其余部分 }) .catch(函数(错误){ console.log(错误); }); } 函数fetchUrfa(){ dbApi.getDbData('/fetchDataUfra') 。然后(数据=>{ //…代码的其余部分 }) .catch(函数(错误){ console.log(错误); }); } 函数fetchRookies(){ dbApi.getDbData(“/fetchDataRookies”) 。然后(数据=>{ //…代码的其余部分 }) .catch(函数(错误){ console.log(错误); }); }


全部取回
取回不明飞行物
招新人

您可以像这样添加和修改代码(其余代码保持不变)

//新代码
//给定按钮的URL(根据需要更改)
常量URL={
全部:'/url1',
新手:'/url2',,
ufra:/‘url3’
};
异步getDbData(url){//在此处传递参数
const dataResponse=wait fetch(url)//此处
const dataJson=wait dataResponse.json()
返回数据JSON
}
const bestBtn=document.querySelector('.jsBestBtnList')
最佳BTN.addEventListener(“单击”,函数(e){
设target=e.target;
让fetchFn=fetcherObject[target.dataset.fetcher];
//获取url的方式与获取函数的方式相同
让arg=URL[target.dataset.fetcher];
if(fetchFn){
fetchFn(arg);//在此处传递参数
}
});
函数fetchAll(url){//将其传递到此处
dbApi.getDbData(url)//这里也是
...
...

您可以向getDbData添加url参数,如下所示:

class DbApi {
    constructor() {
    }

    async getDbData(url) {
        const dataResponse = await fetch(url)
        const dataJson = await dataResponse.json()
        return dataJson
    }
}

const bestBtn = document.querySelector('.jsBestBtnList')

bestBtn.addEventListener("click", function (e) {
    let target = e.target;
    let url = target.dataset.url;
    if (url) { 
        fetchUrl(url);
    }
});

let show = document.querySelector('#show')

const dbApi = new DbApi

function fetchUrl(url){
  dbApi.getDbData(url)
    .then(data => {
        show.innerHTML = "";
        let players = data.result; // Get the results

        show.innerHTML  = players.map(player => {

            let colorToChange = "";
            let plusMinusSign = "";
            let colorWhite = "#FFFFFF";


            if (player.scoreChange >= 0) {
                colorToChange = "#66FF13";
                plusMinusSign = "+";
            }
            else {
                colorToChange = "#D0021B";
                plusMinusSign = "";
            }

            return `<p style='color:${colorWhite}'>${player.playerName}</p>
            <p style='color:${colorWhite}'>${player.teamName}</p>
            <h3 style='color:${colorToChange}'>${plusMinusSign} ${player.scoreChange} %</h3>`
        }).join('')

    })
    .catch(function (error) {
        console.log(error);
    });
}


<button class="fetcher-btn" data-url="/fetchDataAll">Fetch all</button>
<button class="fetcher-btn" data-url="/fetchDataUfra">Fetch ufra</button>
<button class="fetcher-btn" data-url="/fetchDataRookies">Fetch rookies</button>
DbApi类{
构造函数(){
}
异步getDbData(url){
const dataResponse=等待获取(url)
const dataJson=wait dataResponse.json()
返回数据JSON
}
}
const bestBtn=document.querySelector('.jsBestBtnList')
最佳BTN.addEventListener(“单击”,函数(e){
设target=e.target;
让url=target.dataset.url;
如果(url){
获取url(url);
}
});
let show=document.querySelector(“#show”)
const dbApi=新的dbApi
函数fetchUrl(url){
dbApi.getDbData(url)
。然后(数据=>{
show.innerHTML=“”;
让players=data.result;//获取结果
show.innerHTML=players.map(player=>{
让颜色改变=”;
让plusMinusSign=“”;
让colorWhite=“#FFFFFF”;
如果(player.scoreChange>=0){
colorToChange=“#66FF13”;
plusMinusSign=“+”;
}
否则{
colorToChange=“#D0021B”;
plusMinusSign=“”;
}
返回`

${player.playerName}

确定,但什么可以