Php javascript单击一行并触发该行;onclick";事件
我有一张桌子:Php javascript单击一行并触发该行;onclick";事件,php,javascript,Php,Javascript,我有一张桌子: <table> <th>Title</th> <th>Artist</th> <th>Length</th> <tbody> <?php foreach ($lib as $name) { echo "<tr onmouseover=\"ChangeColor(this, true);\" onmouseout=\"ChangeColor(th
<table>
<th>Title</th>
<th>Artist</th>
<th>Length</th>
<tbody>
<?php
foreach ($lib as $name)
{
echo "<tr onmouseover=\"ChangeColor(this, true);\"
onmouseout=\"ChangeColor(this, false);\"
onclick=\"dispSong('".$name->title. "','".$name->url."', this);\"><td>".$name->title."</td><td>".$name->artist."</td><td>".$name->time."</td></tr>";
}
?>
</tbody>
</table>
我有一个名为next的按钮,当单击它时,它会调用nextSong函数。我想知道,当按下“下一步”按钮时,我是否可以以编程方式单击下一行。这段代码应该允许您以编程方式触发事件:
var target = document.getElementsByTagName('tr')[row];
if(document.dispatchEvent) { // W3C
var oEvent = document.createEvent( "MouseEvents" );
oEvent.initMouseEvent("click", true, true,window, 1, 0, 0, 0, 0, false, false, false, false, 0, null);
target.dispatchEvent( oEvent );
}
else if(document.fireEvent) { // IE
target.fireEvent("onclick");
}
关于initMouseEvent的一些文档位于
编辑:
这就像是
元素的符咒,但似乎不适用于“`”,尽管…这行代码肯定不起作用:document.getElementById('tr')[row]。单击,因为tr
是标记名,而不是元素ID。我不确定您要做什么,所以不知道建议什么。也许您的意思是使用getElementsByTagName()
?您的HTML有缺陷。您应该将th
s放入thead
;目前他们被迫进入tbody
@jfriend00 ah。。。。对应该使用getElementByTag…谢谢@pimvdb我会解决的。。。仍在学习HTMLIf如果您愿意使用像jQuery这样的跨浏览器框架(这使这件事变得更容易),那么下面是一些与您的应用程序相关的示例代码:。在您的代码中,我个人不会尝试模拟单击。只需直接调用需要调用的函数,而不是模拟单击代码>将不起作用,因为tr
是标记名,而不是id,并且getElementById
不返回数组。@jfriend00如果我将其更改为getElementByTag,会起作用吗?或者我需要ID吗?getElementByTag
不是DOM方法。编程需要精确的语法。正如我在上一篇文章的评论中提到的,通过标记名获取元素的方法是getElementsByTagName()
。只有当您的页面中没有其他tr
元素(这不是明智的假设或设计限制)时,您才会尝试使用它。
var target = document.getElementsByTagName('tr')[row];
if(document.dispatchEvent) { // W3C
var oEvent = document.createEvent( "MouseEvents" );
oEvent.initMouseEvent("click", true, true,window, 1, 0, 0, 0, 0, false, false, false, false, 0, null);
target.dispatchEvent( oEvent );
}
else if(document.fireEvent) { // IE
target.fireEvent("onclick");
}