Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.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
如何使用JavaScript从表中获取任何特定列数据?_Javascript_Php_Mysql - Fatal编程技术网

如何使用JavaScript从表中获取任何特定列数据?

如何使用JavaScript从表中获取任何特定列数据?,javascript,php,mysql,Javascript,Php,Mysql,我有一个从数据库中提取数据的表。在同一张桌子上,我有两个按钮。通过按下任一按钮,我希望获得所有特定的列数据。我试过几种方法。请参阅下面的代码 生成上表的HTML和PHP: 每个HTML元素都应该有一个特定的id: mysql_connect("hist", "user", "pass")or die("cannot connect to server"); mysql_select_db("name")or die("cannot select DB"); $sql = "query"; $r

我有一个从数据库中提取数据的表。在同一张桌子上,我有两个按钮。通过按下任一按钮,我希望获得所有特定的列数据。我试过几种方法。请参阅下面的代码

生成上表的HTML和PHP:


每个HTML元素都应该有一个特定的id:

mysql_connect("hist", "user", "pass")or die("cannot connect to server"); 
mysql_select_db("name")or die("cannot select DB");
$sql = "query";
$result = mysql_query($sql);
$i = 0;

while($row=mysql_fetch_assoc($result))
{
     echo '<tr>
     <td><div style="width:100%;height: 60px;margin: 0;padding: 0;overflow-y: scroll">'.$row["pic_path"].'</div></td>             
     <td><div onclick="getval(this)" class="cventablehead" id="ventablehead_'.$i'" style="width:100%;height: 60px;margin: 0;padding: 0;overflow-y: scroll; cursor: pointer; color:red;">'.$row["heading"].'</div></td>
     <td>'.$row["adding_date"].'</td>
     <td><div style="width:100%;height: 60px;margin: 0;padding: 0;overflow-y: scroll">'.$row["body"].'</div></td>
     <td><button onclick="addcourse('.$i.')">Add</button></td>
     <td><button onclick="addbatch(this)">Add</button></td>
     </tr>';
     $i++;
}
?>
  </table>
</div>


function addcourse(index) {
    alert(document.getElementById('#ventablehead_'+index).innerHTML);
}

将“单元格内容”属性添加到按钮,以指定要从中获取数据的列:

<td><button type="button" class="addcourse" cell-content="1">Add</td>
并将侦听器连接到按钮:

<script type="text/javascript">
    var btns = document.getElementsByClassName('addcourse');

    var findAncestor = function (el, sel) {
        while ((el = el.parentElement) && !((el.matches || el.matchesSelector).call(el,sel)));
        return el;
    };

    var getCellContent = function (row, cellIndex) {
        return row.cells[cellIndex].firstChild.innerHTML;
    };

    var onClick = function() {
        // Find <tr> ancestor of the clicked button
        var row = findAncestor(this, 'tr');

        var data = getCellContent(row, this.getAttribute('cell-content'));

        console.log(data);
    };

    for (var i = 0; i < btns.length; i++) {
        btns[i].addEventListener('click', onClick, false);
    }
</script>

谢谢,但它显示了类似CISCO的东西。我如何才能只获得innerhtmlHow可能工作?您正在while循环中创建具有相同id的多个元素,这是不允许的。多个元素可以具有相同的类,但不具有相同的id。至少要解决这个问题@菲利佩·杜阿尔特(Filipe_Duarte)在下面的回答似乎是正确的。您应该向上投票选择您喜欢的答案,然后单击复选标记√ 除了解决您的问题之外,还要感谢他们的帮助。还有,为什么要用JavaScript来操纵DOM呢?为什么不使用jQuery?它的编写和使用更加方便,代码更加简洁易读。
<td><button type="button" class="addcourse" cell-content="1">Add</td>
<script type="text/javascript">
    var btns = document.getElementsByClassName('addcourse');

    var findAncestor = function (el, sel) {
        while ((el = el.parentElement) && !((el.matches || el.matchesSelector).call(el,sel)));
        return el;
    };

    var getCellContent = function (row, cellIndex) {
        return row.cells[cellIndex].firstChild.innerHTML;
    };

    var onClick = function() {
        // Find <tr> ancestor of the clicked button
        var row = findAncestor(this, 'tr');

        var data = getCellContent(row, this.getAttribute('cell-content'));

        console.log(data);
    };

    for (var i = 0; i < btns.length; i++) {
        btns[i].addEventListener('click', onClick, false);
    }
</script>