Javascript 获取子属性
我一个接一个地多次使用此HTML代码:Javascript 获取子属性,javascript,function,attributes,Javascript,Function,Attributes,我一个接一个地多次使用此HTML代码: <li> <img src="path/to/my/picture.jpg" alt="my picture" /> <span>picture title</span> </li> clickedLi变量只是一个在包含文档中所有li标记的数组中循环的变量 这是我的完整JavaScript代码: var myLis = document.getElementsByTagName('l
<li>
<img src="path/to/my/picture.jpg" alt="my picture" />
<span>picture title</span>
</li>
clickedLi
变量只是一个在包含文档中所有li
标记的数组中循环的变量
这是我的完整JavaScript代码:
var myLis = document.getElementsByTagName('li');
var liCnt = myLis.length;
for(var i = 0; i < liCnt; i++) {
var currentLi = myLis[i];
currentLi.onclick = function() {
var imgPath = firstElementChild(this);
var pathLi = imgPath.getAttribute("src");
var imgTitle = lastElementChild(this);
var titleLi = imgTitle.firstChild.data;
var myImgDiv = document.getElementById("test");
myImgDiv.innerHTML = '<h2>' + titleLi + '</h2>';
myImgDiv.innerHTML = '<img src="' + pathLi + '" alt="' + titleLi + '">'
}
}
var myLis=document.getElementsByTagName('li');
var liCnt=myLis.length;
对于(变量i=0;i
使用.firstElementChild
和.lastElementChild
避免空白文本节点
如果您支持较旧的浏览器,则需要一个垫片
function firstElementChild(el) {
var child = el.firstElementChild;
if (!child) {
child = el.firstChild;
while (child && child.nodeType !== 1)
child = child.nextSibling;
}
return child;
}
function lastElementChild(el) {
var child = el.lastElementChild;
if (!child) {
child = el.lastChild;
while (child && child.nodeType !== 1)
child = child.previousSibling;
}
return child;
}
clickedLi.onclick=function(){
var imgPath=firstElementChild(this);//使用.firstElementChild
和.lastElementChild
避免空白文本节点
如果您支持较旧的浏览器,则需要一个垫片
function firstElementChild(el) {
var child = el.firstElementChild;
if (!child) {
child = el.firstChild;
while (child && child.nodeType !== 1)
child = child.nextSibling;
}
return child;
}
function lastElementChild(el) {
var child = el.lastElementChild;
if (!child) {
child = el.lastChild;
while (child && child.nodeType !== 1)
child = child.previousSibling;
}
return child;
}
clickedLi.onclick=function(){
var imgPath=firstElementChild(this);//下面的代码满足您的要求:
<!DOCTYPE HTML>
<html>
<head>
<script>
var p = {
onload: function() {
var lis = document.getElementsByTagName("li");
for(var i = 0, ceiling = lis.length; i < ceiling; i++) {
lis[i].onclick = function() {
var childNodes = this.childNodes;
for(var j = 0, ceiling2 = childNodes.length; j < ceiling2; j++) {
if(childNodes[j].nodeType == 1) {
if(childNodes[j].nodeName == "IMG") {
alert(childNodes[j].src);
} else if(childNodes[j].nodeName == "SPAN"){
alert(childNodes[j].innerHTML);
}
}
}
}
}
}
};
</script>
</head>
<body onload="p.onload()">
<ul>
<li>
<img src="path/to/my/picture1.jpg" alt="my picture" /> <span>picture title1</span>
</li>
<li>
<img src="path/to/my/picture2.jpg" alt="my picture" /> <span>picture title2</span>
</li>
</ul>
</body>
</html>
var p={
onload:function(){
var lis=document.getElementsByTagName(“li”);
对于(变量i=0,上限=lis.length;i<上限;i++){
lis[i].onclick=function(){
var childNodes=this.childNodes;
对于(var j=0,ceiling2=childNodes.length;j
图片标题1
图片标题2
下面的代码符合您的要求:
<!DOCTYPE HTML>
<html>
<head>
<script>
var p = {
onload: function() {
var lis = document.getElementsByTagName("li");
for(var i = 0, ceiling = lis.length; i < ceiling; i++) {
lis[i].onclick = function() {
var childNodes = this.childNodes;
for(var j = 0, ceiling2 = childNodes.length; j < ceiling2; j++) {
if(childNodes[j].nodeType == 1) {
if(childNodes[j].nodeName == "IMG") {
alert(childNodes[j].src);
} else if(childNodes[j].nodeName == "SPAN"){
alert(childNodes[j].innerHTML);
}
}
}
}
}
}
};
</script>
</head>
<body onload="p.onload()">
<ul>
<li>
<img src="path/to/my/picture1.jpg" alt="my picture" /> <span>picture title1</span>
</li>
<li>
<img src="path/to/my/picture2.jpg" alt="my picture" /> <span>picture title2</span>
</li>
</ul>
</body>
</html>
var p={
onload:function(){
var lis=document.getElementsByTagName(“li”);
对于(变量i=0,上限=lis.length;i<上限;i++){
lis[i].onclick=function(){
var childNodes=this.childNodes;
对于(var j=0,ceiling2=childNodes.length;j
图片标题1
图片标题2
使用此HTML:
<ul id="mylist">
<li>
<img src="path/to/my/picture1.jpg" alt="my picture" />
<span>picture title 1</span>
</li>
<li>
<img src="path/to/my/picture2.jpg" alt="my picture" />
<span>picture title 2</span>
</li>
<li>
<img src="path/to/my/picture3.jpg" alt="my picture" />
<span>picture title 3</span>
</li>
</ul>
-
图片标题1
-
图片标题2
-
图片标题3
您可以这样做:
var listItems = document.getElementById("mylist").getElementsByTagName("li");
for (var i = 0, len = listItems.length; i < len; i++) {
listItems[i].onclick = function() {
var spanObj = this.getElementsByTagName("span")[0];
var spanText = spanObj.textContent || spanObj.innerText;
var imgSrc = this.getElementsByTagName("img")[0].src;
// now you have imgSrc and spanText here to do with as you please
};
}
var listItems=document.getElementById(“mylist”).getElementsByTagName(“li”);
for(var i=0,len=listItems.length;i
在此进行工作演示:
加载文档后运行此代码。最简单的方法是将此代码放在
标记之前,可以是内联的,也可以是包含在.js文件中的。使用此HTML:
<ul id="mylist">
<li>
<img src="path/to/my/picture1.jpg" alt="my picture" />
<span>picture title 1</span>
</li>
<li>
<img src="path/to/my/picture2.jpg" alt="my picture" />
<span>picture title 2</span>
</li>
<li>
<img src="path/to/my/picture3.jpg" alt="my picture" />
<span>picture title 3</span>
</li>
</ul>
-
图片标题1
-
图片标题2
-
图片标题3
您可以这样做:
var listItems = document.getElementById("mylist").getElementsByTagName("li");
for (var i = 0, len = listItems.length; i < len; i++) {
listItems[i].onclick = function() {
var spanObj = this.getElementsByTagName("span")[0];
var spanText = spanObj.textContent || spanObj.innerText;
var imgSrc = this.getElementsByTagName("img")[0].src;
// now you have imgSrc and spanText here to do with as you please
};
}
var listItems=document.getElementById(“mylist”).getElementsByTagName(“li”);
for(var i=0,len=listItems.length;i
在此进行工作演示:
加载文档后运行此代码。最简单的方法是将此代码放在
标记之前,可以是内联的,也可以是包含在.js文件中。您可能需要imgTitle.html()
,而不是。data
。我不喜欢使用jQuery。只是个人偏好。您可能需要imgTitle.html()
,而不是。data
。我不喜欢使用jQuery。只是个人偏好。为什么可以使用getElementsByTagName()时会如此复杂
在上单击li
标记,而不是走c