从自动生成的列表中选择时,将“img id”更改为“document.getElementById”的解决方案
Solution for changing' img id' with 'document.getElementById' when selecting from auto generated list
自动生成的列表中进行选择时更改图像 ID 的解决方案此代码:
<?php foreach(glob('pano/*.png') as $filename):?>
<li><a href="javascript:chgpano()"><?php $path_parts = pathinfo ($filename); echo $path_parts['filename'], "'n";?></a> </li>
<?php endforeach; unset( $filename);?>
生成一个屏幕,其中包含每个文件的按钮。函数 chgpano:
function chgpano()
{
ima = document.getElementById("tonto");
init();
}
更改分配给变量"ima"的 img Id。"tonto"的内容需要反映所选的图像。
以下内容不起作用,但确实显示了意图:
function chgpano()
{
img id="tonto" src= ('pano/'+ variable with text from button selected)
ima = document.getElementById("tonto");
init();
}
我看到了一个类似的问题,但因不清楚而被拒绝
试试这个:
// PHP can look like
$liA = '';
foreach(glob('pano/*.png') as $f){
$path_parts = pathinfo($f);
$liA .= "<li><a href='javascript:chgpano($f)'>{$path_parts['filename']}></a></li>";
}
echo $liA;
// JavaScript can look like + some goodies
var doc = document; // get in the habit of declaring variables
function E(e){
return doc.getElementById(e);
}
var tonto = E('tonto');
function chgpano(f){
tonto.src = f;
}
我会使用外部JavaScript,将<script>
标签放在正文的底部。或者,您可以将 <script>
标记放在<head>
中并运行 onload
。
如注释中所述,HTML 中 id 的目的是针对一个元素。所以我会使用class
或新data-TAG
.
要将 PHP 脚本也用于其他脚本/站点,我会扫描文件夹并将所有内容转换为 json
.(包含 PNG 所有路径的简单数组)
下面是一个使用 JavaScript 1.7(现代 HTML5 浏览器)的示例
使用一个处理程序处理多个元素。
扫描PNG.php
echo json_decode(glob('pano/*.png'));
索引.html
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
img{width:100px;}
img.IMA{opacity:0.3;}
</style>
<script>
var box;
function ajax(a,b,c){c=new XMLHttpRequest;c.open('GET',a);c.onload=b;c.send()};
function display(){
box.innerHTML='<img src="'+JSON.parse(this.response).join('"><img src="')+'">';
}
function whatever(e){
e.target.classList.toggle('IMA');// activate & deactivate
//or
//e.target.dataset['IMA']=e.target.dataset['IMA']=='ON'?'OFF':'ON';
}
window.onload=function(){
box=document.getElementsByTagName('div')[0];
box.addEventListener('click',whatever,false);
ajax('scanForPNGs.php',display);
}
</script>
</head>
<body>
<div></div>
</body>
</html>
在whatever
函数中,您可以向单击的元素添加任何属性或函数。
就我而言,我只是更改不透明度。
触发器是图像本身。
我没有测试这段代码...确保使用Chrome进行测试。
例
http://jsfiddle.net/8jeDS/1/
谢谢大家和加尔斯。这修复了它:
<?php
foreach(glob('pano/*.png') as $filename):$path_parts = pathinfo ($filename); $id_front = $path_parts['filename'];?>
<li> <a onclick = "javascript:chgpano('<?php echo $id_front ?>')"><?php echo $id_front, "'n";?></a><img id= <?php echo $id_front ?> src= <?php echo$filename ?> style="display:none"></li>
<?php endforeach; unset( $filename);?>
如您所见,我将用于分配图像 id 的相同变量放入函数参数中。
现在变量 ima 包含 img id
function chgpano(blah)
{
ima = document.getElementById(blah);
init();
}
我必须将变量定义移到div 的
- 自动生成的用户名
- 从现有html自动生成html源文档
- 使用Google Feeds API使用“tap”在jquery mobile中自动生成feed列表
- Div 自动生成时自动关闭
- 如何选择由 DevExpress constrols 使用 Javascript DOM 技术自动生成的 html “i
- 数据表自动生成的序列号无法正常工作.对于每一页
- 数组中自动生成的一组值
- 我可以自动生成一个jquery块,对不同的元素做同样的事情吗
- 弹出窗口自动生成无边界
- 在文本框中自动生成值
- SignalR Jquery自动生成Div
- 如何自动生成目录
- 从JSON模式自动生成JavaScript
- 如何在FineUploader上传到s3时获得客户端自动生成的uuid
- 如何获取插入到表中的行的自动生成的ID
- Firebase-如何找到所有具有自动生成ID的匹配项,其中值为false
- 使用javascript从字符串中自动生成标记
- 在HTML表单中使用自动生成(即随机)的ID
- 是否可以对three.js自动生成的画布进行样式化/定位
- 从自动生成的列表中选择时,将“img id”更改为“document.getElementById”的解决方案