简体   繁体   English

开关盒在javascript中无法正常工作

[英]switch case not working properly in javascript

I Have Written This Code For Link Redirection But The Problem With The Code It Triggered Only First Case It Omits Other Cases In The Switch Statement 我已经为链接重定向编写了此代码,但是该代码的问题仅触发第一种情况,而忽略了switch语句中的其他情况

<script type="text/javascript"> 
window.onload = function () {
    var links = document.getElementsByTagName("a");
    for (var i = 0; i < links.length; i++) {
        var string = links[i].href; //href value
        var str = string;
        var spl = string.split("/");
        switch (spl[2]) {

            case 'www.google.com':
                var str1 = "http://yahoo.com";
                links[i].target = "_blank";
                var m = links[i].addEventListener("mouseup", function () {
                    window.open(str1)
                }, false);
                return (m);
                break;

            case 'www.ebay.com':
                var str1 = "http://yahoo.com";
                links[i].target = "_blank";
                var m = links[i].addEventListener("mouseup", function () {
                    window.open(str1)
                }, false);
                return (m);
                break;

            default:
                links[i].href = string;
        }

    }
}
</script> 

HTML: HTML:

<a href="http://www.google.com/">www.google.com</a></br>
<a href="http://www.ebay.com/">www.ebay.com</a></br>

Since you have return(m); 既然你有return(m); here, it returns from there and do not execute the rest of the code. 在这里,它从那里返回,并且不执行其余代码。 you can test it by putting alert("Hi"); 您可以通过发出alert("Hi");来测试它alert("Hi"); after the return statement. 在return语句之后。 This alert should not work for your code. alert不适用于您的代码。

<script type="text/javascript"> 
window.onload = function () {
    var links = document.getElementsByTagName("a");
    for (var i = 0; i < links.length; i++) {
        var string = links[i].href; //href value
        var str = string;
        var spl = string.split("/");
        switch (spl[2]) {

            case 'www.google.com':
                var str1 = "http://yahoo.com";
                links[i].target = "_blank";
                var m = links[i].addEventListener("mouseup", function () {
                    window.open(str1)
                }, false);
                break;

            case 'www.ebay.com':
                var str1 = "http://yahoo.com";
                links[i].target = "_blank";
                var m = links[i].addEventListener("mouseup", function () {
                    window.open(str1)
                }, false);
                break;

            default:
                links[i].href = string;
        }

    }
}
</script> 

Remove return(m) from above code. 从上面的代码中删除return(m)。 It should work fine. 它应该工作正常。 It's return after first call. 第一次通话后返回。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM