我有一个JS函数,该函数在单击时调用,该函数传递一个字符串,并且第一个按钮有效,但是所有后续按钮都给我错误action is not a function (In 'action("upvote")', 'action' is "")其中 action 是函数的名称,upvote 是传递的变量。使用检查元素向我显示两个按钮是相同的,这是它们的外观<button type="button" onclick="action('upvote')">Like</button>最奇怪的是按钮在它调用函数之前,并且适用于所有按钮,而不仅仅是第一个按钮<button type="button" onclick="fun(84)">Reply</button>我检查了,我没有忘记关闭任何div或按钮我唯一能想到的是,我通过递归php函数来回显这些,我不认为JS函数有范围,但我不明白为什么第一个按钮工作而不是后续如果需要更多代码,请告诉我下面的代码是我对父 divs 的打印函数 echo "<div class='parent' style='margin-left:".$width."px'>".$x['comment']." <div class='actions'> <button type='button' onclick='fun($ran)'>Reply</button> <button type='button' onclick='action(\"upvote\")'>Like</button> <button type='button'>Dislike</button>"; //Reply Like and Dislike are all actions every user gets, here I check which user it is to see if they can see the edit/delete //Normally I would check for admin rather than id == 2, but there is only 1 admin and he id 2 if(($comment['userid'] == $_SESSION['id']) || $_SESSION['id'] == 2){ echo "<button type='button'>Edit</button> <button type='button'>Delete</button></div>";//Close of actions div } else{ echo"</div>";//Close of actions div } $uname = mysqli_fetch_assoc($db->query("SELECT username FROM users WHERE id = ".$comment['userid']." ")); echo" <div class='info'> Score: ".$comment['score']." Posted By- ".$uname['username']."   At-".$x['created']." "; if($x['edited'] != NULL){ echo" Edited Last-".$x['edited']." </div>"; } else{ echo"</div>"; }?> </div> //Close of parent div这里仍然是我检查注释是否有任何回复注释的函数的一部分,如果是这样,我递归调用相同的函数,
1 回答
PIPIONE
TA贡献1829条经验 获得超9个赞
action中的内联事件处理程序引用包含单击元素的窗体的属性。它隐藏全局函数,为函数使用不同的名称,或者更确切地说,用于附加事件。您可以在代码段中看到该值。actionactionaddEventListener
function foo(a) {
console.log(a);
}
<form>
<button type="button" onclick="foo(action);">
Click
</button>
</form>
这背后的原因是,内联处理程序中的代码使用(或类似的内部作用机制)限定为事件目标元素,并且当从元素本身找不到给定的变量(实际上的属性)时,请查找祖先元素,直到找到该属性。如果未从元素中找到它,则要搜索的最后一个对象是 ,通过这种方式,它可以找到要执行的全局函数,前提是在升级到with (event.target) {...}windowwindow.
添加回答
举报
0/150
提交
取消