在javascript中将动态网址设置为href

时间:2018-04-02 04:29:50

标签: javascript

我想设置动态链接到href链接。我真正需要做的是调用一个js方法,它根据一个href内的域返回url。

 <a href="javascript:getAuthUrl()"><u>Login&gt;&gt;</u></a>

 function getAuthUrl() {
       ...
            if (domain.includes("localhost")) {
                return buildOAuthUrl(hostConfig.dev);
            }
            else if (domain.includes("...")) {
                return buildOAuthUrl(hostConfig.test);
            }
            else if (domain.includes("....")) {
                return buildOAuthUrl(hostConfig.uat);
            }
            else if (domain.includes("....")) {
                return buildOAuthUrl(hostConfig.prod);
            }
            else if (domain.includes("....")) {
                return buildOAuthUrl(hostConfig.test);
            }
            else {
                return buildOAuthUrl(hostConfig.dev);
            }
        }
    }

我在stackoverflow中尝试了一些示例,但这并没有解决我的错误/问题。

2 个答案:

答案 0 :(得分:2)

虽然'CertainPerformance'已经很好地回答了问题。添加另一个版本,你想让它与问题保持一致。

您可以直接对onClick事件使用锚点标记进行DOM操作。

示例:

function getAuthUrl() {
    url="";
    if (domain.includes("localhost")) {
        url=buildOAuthUrl("dev");
    }
    else if (domain.includes("...")) {
        url=buildOAuthUrl("test");
    }
    else if (domain.includes("....")) {
        url=buildOAuthUrl("uat");
    }
    var b = document.querySelector("#url");
    b.setAttribute("href", url);    
}

<a id="url" href="" onclick="getAuthUrl()"><u>Login&gt;&gt;</u></a>

答案 1 :(得分:1)

尝试添加事件侦听器,而不是使用内联eval:

document.querySelector('a').addEventListener('click', (e) => {
  if (Math.random() < 0.5) e.target.href = 'https://stackoverflow.com/questions/49605314/set-dynamic-url-to-a-href-in-javascript/49605338';
  else e.target.href = 'https://stackoverflow.com';
});
<a>go somewhere</a>

(如果您想保留普通的链接点击处理,请务必不要使用e.preventDefault()