javascript - 通过多次传递正确传递内联 onclick 字符串的参数

标签 javascript html onclick escaping parameter-passing

我有两个不同的侧面板,设置不同,但我想使用一个“登录”表单来访问其中一个,具体取决于我点击的是链接 A 还是链接 B。因此,我需要使用任一链接中的原始字符串onclick 属性来更改“登录”表单的 onclick 属性,这样我就可以将该字符串传递给它使用的函数。

我承认我是一个新手,尽管学得很快。我在这里遗漏了一些东西,无法弄清楚,甚至可能走错了方向,所以如果我是,请理顺我! :)

链接A
<a href="#" id="leftOpen" onclick="openLogin(leftPanel)"></a>

链接B
<a href="#" id="rightOpen" onclick="openLogin(rightPanel)"></a>

登录链接
<a href="#" id="loginBtn" onclick="openPanel()"></a>

如果点击链接 A,登录链接应该是第一个功能后的链接
<a href="#" id="loginBtn" onclick="openPanel(leftPanel)"></a>


功能

function openLogin(panel){
    var panel;
    $("#login").css("z-index", "1000");
    $("#login").addClass("show");
    document.getElementByID("#loginBtn").setAttribute("onclick","openPanel(\" . panel . \")");
    };

function openPanel(open){
    var open;
    if (window.XMLHttpRequest) {
        xmlhttp=new XMLHttpRequest();
    }
    else {
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }

    xmlhttp.onreadystatechange=function() {
        if (xmlhttp.readyState==4 && xmlhttp.status==200) {
            result=xmlhttp.responseText;
                if (result == 0) {
                    $("#login").css("z-index", "-1");
                    $("#login").removeClass("show");
                    $("#" . open).addClass("openSettings");  // Got to be something wrong here!
                    document.getElementById("pwd").value='';
                }
                else {
                    alert("The password entered is incorrect.")
                    document.getElementById("pwd").value='';
                }
        }
    }
    var url="../somewhere/mychk.php?pwd="+document.getElementById("pwd").value;
    xmlhttp.open("GET",url,true);
    xmlhttp.send();
};

最佳答案

您需要在您的onclick 事件中传入一个字符串,作为面板的id

<a href="#" id="leftOpen" onclick="openLogin('leftPanel')"></a>

您正在 openLogin 中重新定义 panel,从而覆盖您传入的任何内容

function openLogin(panel){

    // remove this line
    // var panel;

    $("#login").css("z-index", "1000");
    $("#login").addClass("show");
    document.getElementByID("#loginBtn").setAttribute("onclick", "openPanel('" + panel + "')");
};

根据您的面板 id 是什么,如果您使用正确的连接运算符,则以下内容应该有效

$("#" + open).addClass("openSettings");

关于javascript - 通过多次传递正确传递内联 onclick 字符串的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19946580/

相关文章:

java - 提交表单以在新窗口中打开 pdf 时丢失参数

javascript - Docker:MongoDB 初始化脚本无法运行 - 身份验证错误

javascript - Bootstrap 模式内部的表单不更新 mysql 中的值

javascript - 使用 Jquery 计算 HTML 字符串元素

javascript - 单击表单上的下一个按钮后禁用 Scrolltop - js

javascript - 当ajax调用未完成时,如何阻止用户再次点击链接?

android - 启动器重启后 AppWidget PendingIntent 不工作

javascript - 我如何在 Vuejs 中设置刷新时的旧输入值

javascript - 将鼠标悬停在 div 上时检查是否按下了键

html - 当我选择 'View' 时模块窗口不会打开