我能';无法在javascript中获取图像的id
我想在鼠标滚轮上获取javascript中img的id,但当我执行getElementById时,它会告诉我长度为null 这是我放置img的函数我能';无法在javascript中获取图像的id,javascript,html,Javascript,Html,我想在鼠标滚轮上获取javascript中img的id,但当我执行getElementById时,它会告诉我长度为null 这是我放置img的函数 function parse_data(data) { var json = data; var obj = JSON.parse(json); var buff = ""; for(var i in obj) { //document.write('<br>' + i + '<br>');
function parse_data(data)
{
var json = data;
var obj = JSON.parse(json);
var buff = "";
for(var i in obj)
{
//document.write('<br>' + i + '<br>');
for (var j in obj[i])
{
if (obj[i][j] == true)
buff += "<a href=\"#\" onmousewheel=\"test()\" ><img id=\"obj[i]\" src=\"../images/pix_green.jpg\" border=\"0\" /></a>";
else
buff += "<a href=\"#\" onmousewheel=\"test()\" ><img id=\"obj[i]\" src=\"../images/pix_gray.jpg\" border=\"0\" /></a>";
}
buff += "<br>";
}
document.getElementById('frisekk').innerHTML = buff;
}
我怎样才能得到我的img的id
这里有所有的html代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Techniques AJAX - XMLHttpRequest</title>
<script>
var unit = 60;
var date = 'Mon Oct 20 2014 19:25:00 GMT (CET)';
function request(callback)
{
var xhr = getXMLHttpRequest();
var frise = 600;
var template = 'lab';
xhr.onreadystatechange = function()
{
if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0))
callback(xhr.responseText);
};
xhr.open("GET", "a.php?Frise=" + frise + "&Unit=" + unit + "&Template=" + template + "&Date=" + date, true);
xhr.send(null);
}
function readData(sData)
{
parse_data(sData);
}
function parse_data(data)
{
var json = data;
var obj = JSON.parse(json);
var buff = "";
for(var i in obj)
{
//document.write('<br>' + i + '<br>');
for (var j in obj[i])
{
//document.write(j + "=" + obj[i][j] + '<br>');
if (obj[i][j] == true)
buff += "<a href=\"#\" onmousewheel=\"test()\" ><img id=\"obj[i]\" src=\"../images/pix_green.jpg\" border=\"0\" /></a>";
else
buff += "<a href=\"#\" onmousewheel=\"test()\" ><img id=\"obj[i]\" src=\"../images/pix_gray.jpg\" border=\"0\" /></a>";
}
buff += "<br>";
}
document.getElementById('frisekk').innerHTML = buff;
}
function test()
{
var obj = document.getElementById('img');
alert(obj.length);
if (event.wheelDelta >= 120)
unit -= 60;
else
unit += 60;
request(readData);
}
</script>
<script>
function getXMLHttpRequest()
{
var xhr = null;
if (window.XMLHttpRequest || window.ActiveXObject) {
if (window.ActiveXObject)
{
try
{
xhr = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e)
{
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
}
else
{
xhr = new XMLHttpRequest();
}
}
else
{
alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest...");
return null;
}
return xhr;
}
</script>
<span id="frisekk"> <br/> </span>
</head>
<body>
<form>
<p>
<input type="button" onclick="request(readData);" value="Exécuter" />
</p>
</form>
</body>
</html>
AJAX-XMLHttpRequest技术
var单位=60;
风险值日期='2014年10月20日星期一19:25:00 GMT(CET)';
函数请求(回调)
{
var xhr=getXMLHttpRequest();
var-frise=600;
var模板='lab';
xhr.onreadystatechange=函数()
{
如果(xhr.readyState==4&&(xhr.status==200 | | xhr.status==0))
回调(xhr.responseText);
};
xhr.open(“GET”、“a.php?Frise=“+Frise+”&Unit=“+Unit+”&Template=“+Template+”&Date=“+Date,true”);
xhr.send(空);
}
函数读取数据(sData)
{
数据分析(sData);
}
函数解析_数据(数据)
{
var json=数据;
var obj=JSON.parse(JSON);
var buff=“”;
用于(obj中的var i)
{
//写('
'+i+'
');
对于(obj[i]中的var j)
{
//文件。写(j+“=”+obj[i][j]+'
');
if(obj[i][j]==true)
buff+=”;
其他的
buff+=”;
}
buff+=“
”;
}
document.getElementById('frisekk')。innerHTML=buff;
}
功能测试()
{
var obj=document.getElementById('img');
警报(目标长度);
如果(event.wheelDelta>=120)
单位-=60;
其他的
单位+=60;
请求(读取数据);
}
函数getXMLHttpRequest()
{
var xhr=null;
if(window.XMLHttpRequest | | window.ActiveXObject){
if(window.ActiveXObject)
{
尝试
{
xhr=新的ActiveXObject(“Msxml2.XMLHTTP”);
}
捕获(e)
{
xhr=新的ActiveXObject(“Microsoft.XMLHTTP”);
}
}
其他的
{
xhr=newXMLHttpRequest();
}
}
其他的
{
警报(“Votre navigateur ne supporte pas l'objet XMLHTTPRequest…”);
返回null;
}
返回xhr;
}
文档。getElementById
不会为您获取id,而是通过传递的id获取元素。因为你没有发布你的HTML,我真的不能说你的
var finalElement=document.getElementById(“我的图像”)代码>
找到标记名为“img”的所有元素,然后在它们中搜索右键
var elements=document.getElementsByTagName(“img”);
var finalElement=假;
对于(var i=elements.length-1;i>=0;i--){
//匹配您的元素并返回
如果(/*标准*/){
最终元素=元素[i];
打破
}
}
页面上只有一个图像,然后选择:
var finalElement=document.getElementsByTagName(“img”)[0]代码>
更新
您的onmouseheel
属性可能受支持,但是您需要稍微改变一下,因为您的链接有onmouseheel
事件
<!-- add the 'this' keyword to your test() function to pass the <a> element -->
<a href="#" onmousewheel="test(this)"><img src="path/to/image.jpg" /></a>
现在,您可以轻松地访问元素的唯一子元素图像,并对其进行处理
我不确定OnMouthHeWEL是否支持一个元素,因此PalASE考虑了一个<代码> OnCutabor < /Cord>或<代码> OnMouthOver 来测试这个函数。如果您决定在MouseOver上使用
进行测试,请使用控制台.log
来记录而不是警报
,否则您将淹没在警报中。您不能解析函数调用中的id吗?
例如:
在功能中,
function test(id)??
img
是图像的id吗?你确定它有
?你能把生成的html发布出来吗?如@ekad在上一篇评论中告诉您的,要检查id,图像的id是obj[i],包含像1456058一样的内容,这取决于json,我也不确定obj[i]
是否应该用作id,如果obj[i][j]
存在,那么obj[i]
作为一个对象,而人们期望字符串作为有效的id属性。是的,它是getElementsByTagName('img')
那么长度应该可以工作。它告诉我“未捕获引用错误:obj未定义”最好是onmouseheel=\“test(obj[i])\”
因为当用户在img上做鼠标滚轮时,我需要img的obj[i]。但它不起作用。@leykan检查我的更新,看看你如何仍然可以访问嵌套在你的
中的
元素,即使您在
上执行onmouseheel
操作,它也会告诉我未捕获类型错误:对象不是函数
,但是否可以不通过img而通过onmouseheel=“test(obj[i])”?因为我需要更多的对象,imgWoops,实际上childNodes()
不是一个函数。我已经将其修改为childNodes[0]
,应该可以使用。我还更改了单词object
,它没有改变,但它更安全,因为object在某些实例中保留为单词。我已经测试过了,它可以工作。但是如果我输入id=“obj[I]”
,它将打印我obj[I]
,而不是obj[I]
的值,是否可以输入obj[I]
?
/* Add a variable to receive your <a> in your test() function. */
function test(link){
/* Use childNodes[0] to select the first child element of the a. */
var image = link.childNodes[0];
/* Will alert '1' if the <a> has a child, will alert '0' if the <a> is empty.*/
alert(image.length);
}
onmousewheel=test(obj[i])
function test(id)??