首页 > 解决方案 > 将变量传递到其他页面并执行 if 条件函数

问题描述

单击按钮后,我有一个 javascript 函数将变量的值传递给其他页面。它似乎可以部分地传递值,但是由于我的条件比较函数不起作用,所以出了点问题。

第一页:

<a href="javascript:void(0)" onclick="pass(2)"></a>
<script>
function pass(x){
        var somval = x;
        window.location = 'contact/index.php?somval=' + somval;
    }

</script>

第二页:

<script>
var somval;
    var qsParm = new Array();
    function qs() {
    var query = window.location.search.substring(1);
    var parms = query.split('&');
    for (var i=0; i < parms.length; i++) {
        var pos = parms[i].indexOf('=');
        if (pos > 0) {
            var key = parms[i].substring(0, pos);
            var val = parms[i].substring(pos + 1);
            qsParm[key] = val;
        }
    }
    }

    function compare(){
        if(somval == 1){
            alert(1);
            $("#radio_1").prop("checked", true);
        }else if(somval == 2){
            alert(2);
            $("#radio_2").prop("checked", true);
        }else{
        };
    }
    compare();
</script>

控制台上显示的唯一错误是: undefined index.php?somval=1:352

标签: javascriptjqueryfunction

解决方案


代码不正确。您必须将qaParm变量初始化为 Object。还要正确设置变量someval的值。请尝试以下代码。

<script>
var somval;
var qsParm = {};
function qs() {
    var query = window.location.search.substring(1);
    var parms = query.split('&');
    for (var i=0; i < parms.length; i++) {
        var pos = parms[i].indexOf('=');
        if (pos > 0) {
            var key = parms[i].substring(0, pos);
            var val = parms[i].substring(pos + 1);
            qsParm[key] = val;
            if(key == 'someval'){
            somval = val;
            }
        }
    }
}


function compare(){
    if(somval == 1){
        alert(1);
        $("#radio_1").prop("checked", true);
    }else if(somval == 2){
        alert(2);
        $("#radio_2").prop("checked", true);
    };
}
compare();
</script>

您还可以使用以下代码为任何键提取查询字符串值。在这种情况下,提取查询字符串值的函数不正确。尝试使用以下函数提取查询字符串参数。该函数接受任何 url。如果没有传递 url,则它采用页面的当前 url。

function getParameterByName(name, url) {
        if (!url) {
            url = window.location.href;
        }
        name = name.replace(/[\[\]]/g, '\\$&');
        const regex = new RegExp(`[?&]${name}(=([^&#]*)|&|#|$)`);
        const results = regex.exec(url);
        if (!results) {
            return null;
        }
        if (!results[2]) {
            return '';
        }
        return decodeURIComponent(results[2].replace(/\+/g, ' '));
    }

推荐阅读