我想创建一个复制目录地址的按钮。
但是通过使用以下代码,我只获得final_array
中第一项的值。
<html>
<head>
<title>Directory Listing</title>
<script>
function copyToClipboard(text) {
window.prompt("Copy to clipboard: Ctrl+C, Enter", text);
}
</script>
</head>
<body>
<?php
$root = 'MyPictures/';
$iter = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($root, RecursiveDirectoryIterator::SKIP_DOTS),
RecursiveIteratorIterator::SELF_FIRST,
RecursiveIteratorIterator::CATCH_GET_CHILD // Ignore "Permission denied"
);
$paths = array($root);
foreach ($iter as $path => $dir) {
if ($dir->isDir()) {
$paths[] = $path;
}
}
$count = sizeof($paths);
$new_arr;
$final_arr;
for($i=2;$i<$count;$i++) {
$new_arr[$i] = str_replace("MyPictures","", $paths[$i]);
$final_arr[$i] = str_replace("\\","/", $new_arr[$i]);
echo '<br>';
echo '<button id="demo" onclick="copyToClipboard(document.getElementById(' . "'demo'" . ').innerHTML)">' . $final_arr[$i] . '</button>';
echo '<br>';
}
?>
</body>
</html>
就像单击任何按钮一样,我在复制对话框中获得第一个元素。
答案 0 :(得分:0)
首先,您使用ID
来指定标记,ID
在文档中必须是唯一的,这是DOM的基础。
所以,这一行:
echo '<button id="demo" onclick="copyToClipboard(document.getElementById(' . "'demo'" . ').innerHTML)">' . $final_arr[$i] . '</button>';
应该有唯一ID而不是静态demo
id, OR 只需使用class
,如下所示:
echo '<button class="demo" onclick="copyToClipboard(document.getElementById(' . "'demo'" . ').innerHTML)">' . $final_arr[$i] . '</button>';
第二部分:
您可以使用this
对象相对传递HTML DOM元素,如下所示:
echo '<button id="demo_'.$i.'" onclick="copyToClipboard(document.getElementById(this.id).innerHTML)">' . $final_arr[$i] . '</button>';