user1912899
user1912899

Reputation:

getElementsByTagName of all siblings

UPDATE:

Let me rephrase.

I have multiple divs that all contain, among other things, an img element with the class="yes". But they're not all the same siblings.

Two examples:

<div id="div1" onclick="function(this)">
  <img src="image1" />
  <div>
    <img src="image2" class="yes" />
  </div>
</div>


<div id="div2" onclick="function(this)">
  <img src="image3" class="yes" />
</div>

Now I'm trying to formulate one function for both divs that would change the source of the image with class yes.

getElementsByTagName doesn't seem to do the trick, nor does getElementsbyClassName.

Any thoughts? Thanks again!

Upvotes: 1

Views: 533

Answers (3)

Anickyan
Anickyan

Reputation: 414

You can use jQuery like this:

function some_function(x)
{
    var arr = $("#" + x.id + " .yes"); // Gets all children of the class "yes"
}

Or if you only want to get img elements, you can do this instead:

function some_function(x)
{
    var arr = $("#" + x.id + "img.yes");
}

In both of these examples, arr would contain DOM elements, and not the kind of "element" produced by jQuery normally.

Upvotes: 1

Abhi Beckert
Abhi Beckert

Reputation: 33369

getElementsByTagname is the wrong function.

There is no easy way to do what you're trying to do, unless you resort to third party libraries such as jQuery.

With jquery, you use this code:

$('img.yes').each(function() {
   console.log(this);
});

Here is a working example of what you're trying to do: http://jsfiddle.net/ZYBp6/

Upvotes: 1

user1912899
user1912899

Reputation:

This seems to work:

function function(x) {
  $(x).find('.yes').attr('src','differentimage.png');
}

Upvotes: 0

Related Questions