Php 如何将标记的id=”“传递给javascript函数?
我在php while循环中有:Php 如何将标记的id=”“传递给javascript函数?,php,jquery,html,Php,Jquery,Html,我在php while循环中有: echo '<li ><a id="'.$rowmnu2['link'].'" href="#" onclick="passto(this)">'.$rowmnu2['title'].'</a></li>'; 正如您看到的那样,li将动态生成,我需要在单击时获取标记的id,并将其传递给passto函数,然后使用ajax将id传递给外部php页面 我无法通过此代码获取id,当我提醒它时,它显示未定义 我的代码
echo '<li ><a id="'.$rowmnu2['link'].'" href="#" onclick="passto(this)">'.$rowmnu2['title'].'</a></li>';
正如您看到的那样,li将动态生成,我需要在单击时获取标记的id,并将其传递给passto函数,然后使用ajax将id传递给外部php页面
我无法通过此代码获取id,当我提醒它时,它显示未定义
我的代码有什么问题吗
请帮助试试这个
echo '<li ><a id="'.$rowmnu2['link'].'" href="#" onclick="passto(this.id)">'.$rowmnu2['title'].'</a></li>';
您不需要将ID传递给函数,因为它接收元素本身。然后,如果需要,它可以使用.id属性访问器获取id:
function passto(elem) {
alert(elem.id);
// Do other stuff
}
试试这个
<li><a id="'.$rowmnu2['link'].'" href="#" onclick="passto(this.id)">'.$rowmnu2['title'].'</a></li
如果要使用jQuery,那么直接使用onclick属性没有什么意义。向链接中添加一个类,然后像这样将它们作为目标: 标记:
正如@Jack所指出的,您也可以使用this.id而不是e.target.id——这是在事件委托内部使用时触发事件的DOM元素。请参阅:您应该做的第一件事是正确地转义HTML使用的变量:
printf('<li ><a id="%s" href="#" onclick="passto.call(this, event)">%s</a></li>',
htmlspecialchars($rowmnu2['link'], ENT_QUOTES, 'UTF-8'),
htmlspecialchars($rowmnu2['title'], ENT_QUOTES, 'UTF-8')
));
当调用passto时,它将指向元素本身,例如
function passto(event)
{
event.preventDefault();
alert(this.id);
}
您可以包含JavaScript代码吗?请使用htmlspecialchars btw.no、alertelem.id转义您的变量;显示一个空警报我添加了一个JSFIDLE演示,演示了它的工作原理。好吧,但不是针对我的情况,但无论如何还是要感谢。我想你们不想显示你们的尝试,因为它一定是不同的和错误的。我的答案和你们的问题中的一个标记一起工作,他的答案要求你们更改你们的HTML。我的回答更一般,因为您可以使用passto中的元素执行其他操作,而不必调用getElementById来执行这些操作。当你可以传递元素本身时,为什么只传递ID呢?谢谢,只有你的答案有效,太好了!!!!e、 target.id应与此处的this.id相同。@Jack True。我倾向于忘记这一点。将其添加到示例中。
$('a.your-neato-class').on('click', function(e){
e.preventDefault(); // stop anchor navigation
// e is a JavaScript element that has some useful properties...
passTo(e.target.id);
});
printf('<li ><a id="%s" href="#" onclick="passto.call(this, event)">%s</a></li>',
htmlspecialchars($rowmnu2['link'], ENT_QUOTES, 'UTF-8'),
htmlspecialchars($rowmnu2['title'], ENT_QUOTES, 'UTF-8')
));
passto.call(this, event)
function passto(event)
{
event.preventDefault();
alert(this.id);
}