将对象作为参数传递给从Javascript中创建的表调用的方法时的混乱行为

将对象作为参数传递给从Javascript中创建的表调用的方法时的混乱行为,javascript,Javascript,我有一张每排都有钮扣的桌子。在每次单击按钮时,我都希望将该行的数据传递给一个方法。我做了以下几件事 HTML <body> <div> <button onclick="load()" >Click</button> <table id="roleTable"> <thead> <tr>

我有一张每排都有钮扣的桌子。在每次单击按钮时,我都希望将该行的数据传递给一个方法。我做了以下几件事

HTML

<body>
    <div>
        <button onclick="load()" >Click</button>
        <table id="roleTable">
            <thead>
                <tr>
                    <td>EnterpriseId</td>
                    <td>Role</td>
                    <td>UserId</td>
                </tr>
            </thead>
            <tbody>
            </tbody>
        </table>
    </div>
</body>
更改函数名将有所帮助
函数loadfun()
{
var data=JSON.parse(sessionStorage.getItem(“loginInfo”);
var html=“”;
对于(变量i=0;i
在第一个示例中,
数据
变量仅存在于
加载
函数的范围内:

function load() {

    var data = JSON.parse(sessionStorage.getItem("loginInfo"));

    //...

}
onclick='loadSegment(data[0])'
然后尝试在该函数之外引用它:

function load() {

    var data = JSON.parse(sessionStorage.getItem("loginInfo"));

    //...

}
onclick='loadSegment(data[0])'
此时它不存在,因此无法引用它。相比之下,在第二个示例中,您在全局范围中创建了
数据
变量,因此它存在于
窗口
对象中,可以在任何地方引用

要将
数据
变量封装在该函数中,您需要为正在创建的HTML提供调用
loadSegment
函数所需的所有信息,而不仅仅是索引引用。也许将整个值序列化到函数调用中?是否可以在
数据-*
属性上设置值?也许将所有代码移到函数中,除了
数据
变量,并将其保持在窗口范围内?你有很多选择,这取决于你想要实现的目标



旁注:您可能不想在
窗口
对象(或任何其他DOM对象)上创建名为
load
的东西。如果不是实际问题,则可能会与其他代码混淆。

您是否也可以为会话存储的内容提供一些JSON示例?这会有什么帮助?为什么“onclick”无法访问该引用。我使用
data
variable中的值创建表行。如果使用所有这些数据创建表并将其传递给方法,那么引用就消失了?@HarshitaSethi:您可以使用对象中的值来构造HTML,这些值将在那里,但您试图从onclick引用变量本身,而该变量不在该范围内。
function load() {

    var data = JSON.parse(sessionStorage.getItem("loginInfo"));

    //...

}
onclick='loadSegment(data[0])'