cwal
cwal

Reputation: 3872

Add variable inside of a function

I have the following code

var elements = parent.document.getElementsByTagName('a');
for(var i = 0, len = elements.length; i < len; i++) {
  elements[i].onclick = function () {
   return confirm_exit('".$_SESSION['SES_abr_langue']."');
  }
}

And I need for the onclick to be appended to the existing onclick event, if it exists.

When I add elements[i].onclick inside the function() it just "hardcodes" it. Meaning it literally puts elements[i].onclick instead of the value of the onclick.

Thanks!

Upvotes: 0

Views: 80

Answers (1)

sroes
sroes

Reputation: 15053

Try using addEventListener:

function onLinkClick() {
    return confirm_exit('".$_SESSION['SES_abr_langue']."');
}
var elements = parent.document.getElementsByTagName('a');
for(var i = 0, len = elements.length; i < len; i++) {
  if (elements[i].addEventListener) {
    elements[i].addEventListener("click", onLinkClick, false);
  } else if (elements[i].attachEvent)  {// for < IE9
      elements[i].attachEvent("onclick", onLinkClick);
  }
}

Edit

Use the following if you want to have control over the original onclick:

function createLinkEvent(orgOnClick) {
    return function(e) {
        if (!confirm_exit('".$_SESSION['SES_abr_langue']."')) {
            return false;
        }
        if (orgOnClick) {
            return orgOnClick(e);
        }
        return true;
    };
}


}
var elements = parent.document.getElementsByTagName('a');
for(var i = 0, len = elements.length; i < len; i++) {
  elements[i].onclick = createLinkEvent(elements[i].onclick);
}

Upvotes: 4

Related Questions