Hello and welcome to our community! Is this your first visit?
Register
Enjoy an ad free experience by logging in. Not a member yet? Register.
Results 1 to 3 of 3
  1. #1
    New to the CF scene
    Join Date
    Jul 2011
    Posts
    4
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Can't save the id of dynamically created anchor onclick

    Hello, I am trying to save a dynamically created anchor's id onclick, but I am having a lot of trouble.

    Code:
    <!DOCTYPE HTML>
    <html>
    <head>
    <meta charset="utf-8">
    <title>Untitled Document</title>
    <style>
    </style>
    </head>
    
    <body onload="initAll();">
    <div id="test"></div>
    
    <script type="text/javascript">
    var xhr = false;			//global xhr variable
    var allRequestIds = new Array();
    var allRequestDates = new Array();
    var allRequestNames = new Array();
    var allRequestBriefs = new Array();
    var allListLinks = new Array();
    var allListItems = new Array();
    var linkId;       //global variable for clicked link's id; set to be the same as xml data's id; used to pull more data in next page
    
    
    function initAll(){
    	if (window.XMLHttpRequest){		//initialize xmlhttprequest into xhr variable
    	xhr = new XMLHttpRequest();
    	}
    	else{}//ie stuff goes here
    	xhr.open("GET","xml/request.xml",true);		//open connection
    	xhr.onreadystatechange=createLinks;				//onreadystatechange call createLinks()
    	xhr.send(null);	
    }
    
    function createLinks(){
    	if(xhr.readyState==4){
    		if(xhr.status==200){
    			if(xhr.responseXML){
    				var allRequests=xhr.responseXML.getElementsByTagName("request");		//save all requests into array
    				var newList=document.createElement("ol");                               //create a new ordered list
    				for(i=0;i<allRequests.length;i++){                        //arrays of each tag, and an array of links
    					allRequestIds[i]=allRequests[i].getElementsByTagName("requestId")[0].firstChild.nodeValue;
    					allRequestDates[i]=allRequests[i].getElementsByTagName("date")[0].firstChild.nodeValue;
    					allRequestNames[i]=allRequests[i].getElementsByTagName("name")[0].firstChild.nodeValue;
    					allRequestBriefs[i]=allRequests[i].getElementsByTagName("brief")[0].firstChild.nodeValue;
    					allListLinks[i]=document.createElement("a");            //create an array of links
    					allListLinks[i].appendChild(document.createTextNode(""+allRequestDates[i]+" "+allRequestNames[i]+" "+allRequestBriefs[i]+""));    //i don't know how to add a new line within createtextnode!!! wtf?! i wanted to add a <br />
    					allListLinks[i].setAttribute("href","somepage.html");
    					allListLinks[i].setAttribute("class","dynamicLink");		
    					allListLinks[i].setAttribute("onclick","pullDetailed();");
    					allListItems[i]=document.createElement("li");             //create an array of list items
    					allListItems[i].appendChild(allListLinks[i]);  //append each anchor into each list item
    					newList.appendChild(allListItems[i]);          //append all list items into ordered list
    				}
    				document.getElementById("test").appendChild(newList);      //append list into test paragraph
    				
    			}
    		}
    	}
    }
    
    function pullDetailed(){
    	alert("function pullDetailed called!");	//this is just testing to see if this function has been called on anchor click
    	linkId=this.innerHTML.;	//this doesn't work
    	alert(linkId);
    }
    </script>
    </body>
    </html>
    does anybody have an ideas? thank you.

  • #2
    Supreme Master coder! Old Pedant's Avatar
    Join Date
    Feb 2009
    Posts
    27,669
    Thanks
    80
    Thanked 4,643 Times in 4,605 Posts
    Never added an onclick using setAttribute like that, myself, but I *think* you need to do simply
    Code:
    	allListLinks[i].setAttribute("onclick",pullDetailed);
    That is, the attribute you want to set is the address of the function.

    If that doesn't work, there are other ways.

  • #3
    New to the CF scene
    Join Date
    Jul 2011
    Posts
    4
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Quote Originally Posted by Old Pedant View Post
    Never added an onclick using setAttribute like that, myself, but I *think* you need to do simply
    Code:
    	allListLinks[i].setAttribute("onclick",pullDetailed);
    That is, the attribute you want to set is the address of the function.

    If that doesn't work, there are other ways.
    that doesn't work. it produces a syntax error

    what other way can you think of?


  •  

    Posting Permissions

    • You may not post new threads
    • You may not post replies
    • You may not post attachments
    • You may not edit your posts
    •