我正在尝试查找包含图像的节点,然后在该图像的标记中找到特定的字符串。但我不知道在页面上何时会出现图片代码,只是它出现在td
个被归类为bodyTextSmall
的元素中。那应该让我到那儿,对吗?
一切正常,直到我尝试获取length
属性的childNodes
。见上面的一行。
这是正确的代码,还是有另一种方法可以找出特定的td
内部是否有img
标记?我正在撕掉我留下的小头发,因为从我对JavaScript的了解很少,这就是它应该如何运作。
问题是我只能通过img
标记知道是否需要格式化td
标记,而且我没有汇编td
标记而无法进入网站的那部分直接进行更改。我已经尝试过CSS选择器来查看我是否可以设置部分图像的样式,但是有一些我无法覆盖的内联样式。同样,这是我无法控制的网站的一部分。
<script type="text/javascript">
function getTables(dRef) {
var d = document;
var dMid = d.getElementById('mainContent');
var dTabs = dMid.getElementsByTagName('td');
// Attempts to load table cells...
for (var i = 0; i < dTabs.length; i++) {
// Attempts to detect the specific cell type...
if (dTabs[i].className == "bodyTextSmall") {
// Attempts to locate the parts inside this cell...
var myNodes = i.ChildNodes; // This part runs, but I can't get "ChildNodes.length" to work
// Attempts to notify the user...
alert(dTabs[i].className + ': ' + i);
}
}
}
window.onload = getTables;
</script>
所以,现在我已经切换到jQuery,我遇到了同样的问题。我可以知道图像在哪里,但我对图像本身无能为力。
<script type="text/javascript">
function getTables() {
// Locates the correct container for images...
$('#mainContent img').each(function(idx, item) {
var tImgs = item.src;
if (tImgs.indexOf("-ds.") > 0) {
window.alert(tImgs);
$(this).append('Here is a message about the image.'); //nothing happens here
}
});
}
window.onload = getTables;
</script>
同样,这个jQuery代码通过响应任何具有“-ds”的图像来响应。在src的任何地方。我无法得到任何其他事情。我知道$(img).append会影响每个图像,所以脚本能够做某事。
现在这已成为获得超出我想要的东西或根本没有任何东西的情况,它真的开始让我最后的紧张。
答案 0 :(得分:5)
i.ChildNodes
未定义
你的意思是childNodes
。
此外,i
是一个数字,而不是DOM元素
你的意思是dTabs[i]
。
答案 1 :(得分:2)
var myNodes = dTabs[i].ChildNodes;
答案 2 :(得分:1)
function dFixIt() {
$('#mainContent img').each(function(idx, item) {
var tImgs = item.src;
if (tImgs.indexOf("-ds.") > 0) {
$(this).parent().after('Here is a message about the image');
}
});
}
如果它是图像,这将在具有ID“mainContent”的元素内找到任何内容。然后它将确定字符串“-ds”。是图像名称中的任何位置。所以“my-friends-ds.jpg”会增加一些东西。
如果图像在链接内,则“.parent()”会在添加消息之前跳过该链接之外的脚本。这可以防止添加的内容成为链接。
如果图片不在链接中,请从字符串中删除“.parent()”,并且应该在图片后直接添加消息。