Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php javascript单击一行并触发该行;onclick";事件_Php_Javascript - Fatal编程技术网

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");
}