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