Php 如何将标记的id=”“传递给javascript函数?

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,当我提醒它时,它显示未定义 我的代码

我在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.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);
}