JavaScript - Dynamically Set An Event - Possible?
note: this is not homework
Hi all, Currently I am doing this: Code: var e = document.getElementById('id'); e.style.color = '#ff0000'; e.style.fontFamily = 'sans-serif'; e.innerHTML = time; ...blah blah... What I'm actually doing is inserting the current time into an existing DIV and updating it every second. THAT all works. What I want to do is also set an event for that div.... something like this: e.event.onclick = 'runThisCode()'; Of course, the above doesn't work... and I'm not even sure what to ask for doing a Google search... because I get no hits (or maybe it's not possible). So, is it possible, and if so, how? Thanks! -- Roger p.s. I really don't want to edit the code itself (where that div is) because it's part of another app that may change as they update it and I don't want to have to re-patch every new release. Similar TutorialsHi I am new to javascript programming. Is it possible to append an event handler to a tag dynamically. <input type="button" id="cmdNext" value="Next Page"> i want to be able to programatically loop through the buttons on a page and then add the onClick event. So my finally result will be the following: <input type="button" id="cmdNext" value="Next Page" onClick="CheckValues()"> Since i am new (if possible) can someone provide detail code example so i can break it down and study it before i implement. Hello friends, I want to trigger click event on an iframe's element through the main window, Doing it both ways, with or without jquery, will be usable for me. Basically, what I want to do is, I have developed a website http://www.ipjugaad.com, and on every document download page, I have placed an fb like button, what I want to do is that the like button should be automatically clicked when a user click on download button on my website. Give me some idea about how to do it? Hi forum, I am trying to attach an event to a dynamically produced button, and then use stopPropagation and preventDefault. Code: function chapter12_nodeOne() { //create an element var element = document.createElement('input'); //set some attributes element.setAttribute('type', 'button'); element.setAttribute('value', 'submit'); element.setAttribute('id', 'myBtn'); //appendd the element into a DIV document.getElementById('myDiv').appendChild(element); //uses EventUtil to attach an event listener EventUtil.addHandler(element, 'click', function() { alert('event attached'); }); var flag = confirm('prevent default behavior of button?'); if (flag) { var el = document.getElementById('myBtn');/////////////////////////(1) var ev = el.onclick; } } var EventUtil = { addHandler: function(element, type, handler) { //check if the element and the browser support DOM Level 2 event attachment //if the user is not browsing with IE if (element.addEventListener) { element.addEventListener(type, handler, false); } //if user is browsing with IE else if (element.attachEvent) { element.attachEvent("on" + type, handler); } //if user is using a browser that only supports DOM Level 0 event attachment else { element["on" + type] = handler; } }, removeHandler: function(element, type, handler) { //check if the element and the browser support DOM Level 2 event attachment //if the user is not browsing with IE if (element.removeEventListener) { element.removeEventListener(type, handler, false); } //if user is browsing with IE else if (element.detachEvent) { element.detachEvent("on" + type, handler); } //if user is using a browser that only supports DOM Level 0 event attachment else { element["on" + type] = null; } } }; But when debugging I see under el on the line marked with (1) that the onclick event is null. What am I doing wrong?! PS:the event is attached, when I click on the button I get an alert message is it possible to capture the control.event or element.event that was fired to invoke the onbeforeunload event. for example, if a button is clicked and it causes the onbeforeunload event to fire can i determine which button was clicked. thanks I have a ondrag event handler and in that I am trying to retrieve e.ClientX but it always return 0 in Mozilla. Works fine in IE though. How can retrieve the clientX and clientY in ondrag event? Hi Guys, I am using the following bit of code to toggle information inside a webpage. Is there a way i can make this code more dynamic so that i do not have to use the next() function to initiate slidetoggle()? I would like to have it so i can pass an ID through to the function and it will then toggle my box but i can't figure it out. Javascript is not my strong suite. Here the function Code: function initMenu() { //$('.items_wrapper').hide();//object to be hidden $('.headline').click(//object to be clicked function() { $(this).next().slideToggle('slow'); //alert("doesn't work"); } ); } $(document).ready(function() {initMenu();}); I would like to create a link inside .headline such as .ViewItems If you need to see the code let me know and i will post it. --EDIT-- Right Now my code is like this and you click headline Code: <div class='headline'></div> <div class='items_wrapper'> </div> I would like it work with an internal element like this, so i can't use next() Code: <div class='headline'><div class='selector'>Click Here</div></div> <div class='items_wrapper'> </div> Thanks in advance. hello, I'm trying to load the ads on my site dynamically and have ran into an issue and was hoping for some help. First - I can get the ads to load using vanilla javascript with the code below. Code: var ifrm = document.createElement("iframe"); ifrm.setAttribute("src", OAS_url + "adstream_sx.ads/" +sitePage + "/" + uniqid() + "@" + pos); var ifrmId = "ifrm_" + uniqid(); ifrm.setAttribute("id", ifrmId); ifrm.setAttribute("marginwidth", 0); ifrm.setAttribute("marginheight", 0); ifrm.setAttribute("frameborder", 0); ifrm.setAttribute("scrolling", 0); ifrm.setAttribute("height", container.scrollHeight + (container.offsetHeight - container.clientHeight)); ifrm.setAttribute("width", container.scrollWidth + (container.offsetWidth - container.clientWidth)); container.appendChild(ifrm); But since the site is using jquery I wanted to develop it out that way. So I have the following code, Code: iRandom = oas.uniqid(); sAdURL = opt.url + 'adstream_mjx.ads/' + opt.sitepage + '/1' + iRandom + '@' + sPos + '?' + opt.query; $('<iframe />', { src: sAdURL, id: sPos }).appendTo(thisAd); I figured the reason this isn't working is the difference between appendChild and appendTo and the fact that things are jquery objects. So again the top code block renders the ads and the lower code block just shows the javascript code from the ad provider. Any help to get this to work in jquery would be grateful. Thanks ok i have a script which will make a copy of the html in a div and place it into another div the problem with this it creates a duplicate element with the same id so what i want to know is can i create a new id based off old ids using a generic type script Code: function scope(e) { var popin = document.getElementById('popin'); popin.innerHTML = "<div class='container'>"+e.innerHTML+"</div>"; popin.style.display = "block"; } this code is designed for taking content in a small div and placing it into a larger div to increase the viewing area so what i would need is sumthing that can look for Code: id="sum text" and maybe amend it to Code: id="sum textP" or sumthing to that extent if sum1 could point me in the right direction that would be great if my post is not clear enough just ask me to be more specific or sumthing and i will see what i can do to try and make it more clear if needed How do I dynamically create a <select> with <options> in Javascript?
Hi, I have the following function to dynamically create an image (in this case a toolbox button): Code: function createButton(srcid,bttn) { if (bttn=='mag') {s='Magnify';h='Magnify';o='DoZoom(event,\'0\',\''+srcid+'\')';} if (bttn=='frz') {s='Pause';h='Freeze/Unfreeze';o='setPicture(\''+srcid+'\',0)';} if (bttn=='swp') {s='Swap';h='Swap maps';o='setPicture(\''+srcid+'\',2)';} btn=document.createElement('img'); btn.setAttribute('src','toolbox/'+s+'.gif'); btn.setAttribute('width','16px'); btn.setAttribute('height','16px'); btn.setAttribute('id',bttn+'btn_'+srcid); btn.setAttribute('class','button'); btn.setAttribute('name','Toolbox'); btn.setAttribute('title',h); btn.setAttribute('onclick',o); document.getElementById('ctrlDiv').appendChild(btn); } which works fine in IE8 and IE9, but in IE7 it refuses to pick up the style 'button'. I've even tried putting in btn.class='button' but JS throws up an error. If I specify the style by btn.style.position='Absolute' it picks this up OK. However, it won't respond to the onclick event either. I have heard that setAttribute is buggy with IE7, which is why I tried to specify each attribute directly. The style sheet for class button is: Code: .button { position: absolute; left: 5; top: 5; z-index: 1; } (BTW, no link to a website as this is local on my machine atm) TIA, Gerald. Hi, I would just like to know how I would dynamically add another table once text fields in the existing table is clicked on. So pretty much what I have is a table with 5 textboxes lined up horizontally in the first row along with couple of buttons in the second row. What I want is that once one text box is clicked, another table like the one above is created and appears below that initial table. So this is the inital table that should be replicated on each click: Code: <table> <tr> <td><input type="text" /></td> <td><input type="text" /></td> <td><input type="text" /></td> <td><input type="text" /></td> <td><input type="text" ></td> </tr> <tr> <td><button /></td> <td><button /></td> </tr> </table> How would I go about achieving this? Thanks I've done some googling and have come across some information, but I'm not quite sure how to apply it to my problem. I have a PHP page saturna.php with six frames on it using the frameset commands. I would like to somehow make it so that when I click on something in one frame (with one PHP page loaded in it - game.php), it automatically/dynamically updates one of the other PHP pages (inventory.php) in another frame. What will happen is when the thing is clicked on in game.php, an entry will be added to the database, and the second PHP page (which retrieves information from the database) will notice that there is a new relevant record, and will add it to the inventory.php page in the table I have constructed there. From my googling it seems I need to use JavaScript to do this, but I'm not quite sure how - any ideas ? Thanks very much! Is it possible to dynamically update an object's source? I have several Quicktime movies which I want to embed into my website using the <object> and <embed> tags. Switching between these movies is to be done through a list of links down the left-hand-side of the current movie. I would like to be able to keep the Quicktime movie player 'open' throughout this presentation, and clicking on the various links updates the current movie without the need to reload the whole webpage. Can these movies be updated dynamically somehow using perhaps javascript to change the object's "src" value and then the movie automatically loads and plays? Thanks, Awbrys. Hi guys, I created a form that contains about 10 form fields and would like to add the option to dynamically add more sets of those 10 fields if a user clicks a word or a button but I need help. I'm a beginner when it comes to JavaScript and would appreciate any help. This is what I need to generate dynamically. Can someone give me an idea of how to get started please? Code: <div id="dynamicInput"> <ul> <li>1</li> <li><input name='textfield1' type='text' size='10' /></li> <li><select name='commodity' width='100' style='width: 100px'> <option>Option 1</option> </select></li> <li><input name='textfield2' type='text' size='5' /></li> <li><input name='textfield3' type='text' size='10' /></li> <li><input name='textfield4' type='text' size='10' /></li> <li><input name='textfield5' type='text' size='10' /></li> <li><input name='textfield6' type='text' size='5' /></li> <li><input name='textfield7' type='text' size='5' /></li> <li><input name='textfield8' type='text' size='5' /></li> </ul> </div> I have an input box "product" besides it there is an add input button which adds another input box product upon clicking.This array of input boxes I have created is through document.createElement('input'). My autocomplete is working for the initial input box....now when I click add Input button for the generated box also the autocomplete shld work...how do I make it work?? PS:Autocomplete script is working so I didnt post it here.... I just want it to make it working dynamically created i/p boxes Can anyone let me know how can I get the href info dynamically I have 2 different webistes, just want to show those website urls dynamically <html> <body> <a href="http://www.yahoo.com" target="_blank">YAHOO</a> <a href="http://www.Google.com" target="_blank">Google</a> <script type="text/javascript"> document.write(href url of yahoo); document.write('href url of google); </script> </body> </html> thanks for help in advance My overall challenge is to make up for what I consider to be a design flaw in how Google Ad Manager works. What I am trying to accomplish is create a way for an advertiser to randomly rotate through whichever ad formats are available, rather than get locked into a particular ad slot location. This has required several steps, most of which I've been able to work out by myself, and now I'm down to what I expect is the last big issue. Because Google Ad Manager pairs up the highest priority advertiser with the first loaded ad slot script, the most important task was to randomize the load order of the scripts. Doing this, however, necessitates pairing up those scripts with the appropriate space set aside for them on the page, more or less after the fact. The code I'm having trouble with is the part where I try to move the node containing the active script to the its desired location and is showing just about every permutation of result except the one that I want, depending on browser. Code: var moveithere = document.getElementById(newmodid); moveithere.appendChild(divinloader[i]); moveithere.appendChild(scriptelement[i]); Not surprisingly, IE breaks as soon as it gets to this point and nothing happens with the divinloader[i] node OR the scriptelement[i] node - I have seen some references that it's not likely to like this and perhaps some recommendations about how to handle it, so I'm not too concerned about that just yet. Firefox doesn't throw any kind of an error, but neither does the scriptelement[i] node do anything at all, even though the divinloader[i] node migrates to where I want it. Chrome comes the closest to working - the script runs, but not in the location that I want. Although I don't expect it's been an exhaustive search, I have tried a number of other approaches and this one has seemed to get me the closest to the desired result with the simplest coding. As to what's currently acceptable coding and what's not, I won't pretend to have a clue. To see the full code in action, what it does, what I'm trying to do and to check for errors (likely) or offer suggestions on how I could get there more easily just use the following - I've substituted simpler code so that you don't have to pull down the actual Google Ad Manager scripts but it seems to work exactly the same and shows what I'm trying to do anyway. Hopefully there aren't any unnecessary artifacts still present. Code: <html> <head> <title>Testing arrayed dynamic randomized script loading</title> </head> <body> <!-- PUT THIS TAG IN DESIRED LOCATION OF SLOT ATFRectangle-Main --> <div id="atfrectangle-outer"> Tell 'em TIO sent you (rectangle) <div id="atfrectangle-inner"> </div> </div> <!-- END OF TAG FOR SLOT ATFRectangle-Main --> <!-- PUT THIS TAG IN DESIRED LOCATION OF SLOT ATFWideSkyscaper-Main --> <div id="atfwideskyscaper-outer"> Tell 'em TIO sent you (skyscaper)<div id="atfwideskyscaper -inner"> </div></div> <!-- END OF TAG FOR SLOT ATFWideSkyscaper-Main --> <!-- PUT THIS TAG IN DESIRED LOCATION OF SLOT FullBanner-Main --> <div id="fullbanner-outer"> Tell 'em TIO sent you (banner)<div id="fullbanner-inner"> </div></div> <!-- END OF TAG FOR SLOT FullBanner-Main --> <h1>Load up the array with ad formats</h1> <script type = "text/JavaScript"> // create an array to hold information about the various ad formats var adformat = new Array(); // load the array with the appropriate ad format data adformat[0] = "FullBanner"; adformat[1] = "ATFRectangle"; adformat[2] = "ATFWideSkyscaper"; // make a notation about what is coming next (and show successful conclusion of previous steps) document.write("<h2>Order for the ad formats as loaded into the array</h2>"); // declare the variable to use for counting var i = 0; // begin looping through as many times as needed to go through entire array and write out each ad format for (i in adformat) { document.write("<p>" + adformat[i] + "<br> </p>"); } // end loop for writing out the list of ad formats loaded into the array // randomize the order of the ad format list randadload = adformat.sort (function(){ return 0.5-Math.random() }) // make a notation about what is coming next (and show successful conclusion of previous steps) document.write("<h2> Order for the ad formats after randomization</h2>"); // declare the variable to use for counting var i = 0; // begin looping through as many times as needed to go through entire array and write out each ad format in the new list order for (i in randadload) { document.write("<p>" + randadload[i] + "<br> </p>"); } // end loop for writing out the randomized list of ad formats // make a notation about what is coming next (and show successful conclusion of previous steps) document.write("<h2>Creating dynamic module names and script-calling variables</h2>"); // declare variables that might be needed // create an array to hold module names modname = new Array(); // create array to hold the names of the google script, partial and full googscript = new Array(); fullgoogscript = new Array(); // create an array to hold the id to be used for the script loader element loaderid = new Array(); scriptloaderid = new Array(); // create an array to hold the id for the module modid = new Array(); // create an array to hold the name of the id for the script inside module modscriptid = new Array(); // create an array to hold the name of the id for the outer DIV tag divoutloader = new Array(); // create an array to hold the name of the id for the inner DIV tag divinloader = new Array(); scriptnodeloader = new Array(); scriptelement = new Array(); // declare the variable to use for counting var i = 0; // create a variable to hold the current script number var scriptnum = 0; // begin looping through number of elements in the array for (i in randadload) { // advance the counter by one increment for each iteration in the loop scriptnum ++; // create a script name based on the name of the ad format googscript[i] = randadload[i] + "-Main"; // change the ad format name to all lower case loadlc = randadload[i].toLowerCase(); // create a module name based on the name of the ad format modname[i] = "main" + loadlc; // create a DIV id name for the loader element based on the name of the ad format loaderid[i] = loadlc + "_loader"; // create a script id name for the loader element based on the name of the ad format // scriptloaderid[i] = loadlc + "_scriptloader"' // create a DIV id name for the inner DIV tag based on the name of the ad format modid[i] = loadlc + "-inner"; // create a script id name based on the name of the ad format modscriptid[i] = loadlc + "-script"; //write out all the names just created to check for successful completion and for accuracy document.write("<p>Module name is " + modname[i] + " and script name is " + googscript[i] + " and loader ID is " + loaderid[i] + " and module id is " + modid[i] + "<br> </p>"); // create a DIV tag to load the script into divinloader[i] = document.createElement("div"); divinloader[i].setAttribute("id", loaderid[i]); divinloader[i].style.display="block"; // use the DIV loader to write out the status of the scripts (ultimately hope to LOAD the scripts) divinloader[i].innerHTML = "<p>Pretend loading script " + scriptnum + " now... <br> GA_googleFillSlot(" + googscript[i] + ");" ; // create the content to be included in the script to be loaded fullgoogscript[i] = 'document.write("<p> This is actually a real script loading ' + googscript[i] + ' as a stand-in for a Google script loading " + randadload[i] + " advertisements.</p>");'; // creating a script element scriptnodeloader[i] = document.createTextNode(fullgoogscript[i]); scriptelement[i] = document.createElement("script"); scriptelement[i].type = "text/javascript"; scriptelement[i].setAttribute("id", scriptloaderid[i]); scriptelement[i].appendChild(scriptnodeloader[i]); // if this line runs, results in [object HTML scriptelement] // divinloader[i].innerHTML = scriptelement[i]; newmodid = modid[i]; newmodscriptid = modscriptid[i] // want to use this to move the script up to its final location // document.getElementById(newmodid).appendChild(divinloader[i]); // document.getElementById(newmodscriptid).appendChild(scriptelement[i]); var moveithere = document.getElementById(newmodid); moveithere.appendChild(divinloader[i]); moveithere.appendChild(scriptelement[i]); } // end looping through elements in the array </script> </body> </html> I appreciate any insights you can provide - feel free to call me an idjit if necessary, but please be specific if you do. Thanks, Kimm Hello, I am just going through my javascript book and looking/learning at examples. I've copied this code and i'm thinking i could really use this in my site, it's something i've been looking for on the internet for a while. I have a few questions regarding certain things and I would like to slightly change the code so it performs an additional task. I have uploaded a live example of the page as it is a lot easier for you guys to help and also easier for myself to explain properly. The file is located he JS test page. As you can see, you click the different tabs and the relative information comes up. 1)How can I change the code so that if one description is currently on-screen, when another tab is clicked, i want to hide the currently displayed information, and show the relative information to that particular tab. 2)As you can see, clicking the tabs just brings up text saying 'Description for Tab' + #. This is added using the DOM, but i want to add a lot of description and obviously do not want to put an awful lot of text into the function. What is the best way to add this content dynamically? Should I create an XML file and access this file using javascript to display the different information? I understand question 2 could be done using ajax and php but I know nothing about either so i was wondering if there was another way to achieve this? Thank you for your time, Regards, LC. I need help, please. How would you write javascript code to check (add tick mark) the checkbox in the below code snippet based on a condition? I have tried using the structu if(x) {document.form.name.checked=true;} but it did not work. I think the checkbox name format below, is a problem. This is all done client-side. Anyone know how to do this? Thanks for any help. Jman Quote: <TABLE id= sec1_sec2_area border=0> <TBODY> <TR> <TD><INPUT id= sec1_sec2_area_0 type=checkbox name= sec1:sec2:area:0><LABEL for= sec1_sec2_area_0>Colors </LABEL></TD></TR> <TR> <TD><INPUT id= sec1_sec2_area_1 type=checkbox name= sec1:sec2:area:1><LABEL for= sec1_sec2_area_1>Size </LABEL></TD></TR> </TBODY></TABLE> |