2011-12-19 23 views
3

イメージを含むノードを見つけようとしていて、そのイメージのタグで特定の文字列を見つけようとしています。しかし、画像タグがページ上でいつ現れるのかは分かりませんが、には、bodyTextSmallと分類されるtd要素にのみ表示されます。それは私をそこに連れてくるはずなのですよね?childnodes.lengthを取得できません

childNodesプロパティのlengthを取得しようとするまで、すべてうまく動作します。上記の行を参照してください。

このコードは正しいですか、特定のtdimgというタグがあるかどうかを調べる別の方法がありますか?私はJavaScriptを少し知っているので、これは動作するはずなので、私が残した小さな髪の毛を裂いています。

問題は、私は唯一の私はtdタグをフォーマットする必要があるかどうかimgタグが知っていることである、と私は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がすべての画像に影響することを知っているので、スクリプトは何かをすることができます。

これは、今や私が何を望むか何もしていない以上の事態になってしまい、本当に最後の神経に乗り始めています。

答えて

5

i.ChildNodesは未定義です。
childNodesを意味します。

また、iは数字であり、DOM要素ではありません。
dTabs[i]を意味します。

2

var myNodes = dTabs[i].ChildNodes;

+0

+1私はそれを逃した – SLaks

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()"を削除して、イメージの直後にメッセージを追加する必要があります。

関連する問題