aggixx Posted June 23, 2008 Share Posted June 23, 2008 Im trying to make a script where you can input a list of URLs and when you hit go, it visits each page for 30 seconds.I haven't been doing js for a while, so I cant remember exactly what some of the functions are and how they work.This is what I have so far: <html><head><title>PTC Machine</title><script>function run() {sites=document.form.ta.value}</script></head><body><div name=div><center><script src="http://gmodules.com/ig/ifr?url=http://linkleecher.com/linkleecher.xml&up_url=Please%20Enter%20Website&up_onefilter=.php?ad=&up_output=text&synd=open&w=320&h=110&title=Link+Leecher&border=%23ffffff%7C3px%2C1px+solid+%23999999&output=js"></script><br><br>Please paste the list of links in the box below and hit go.<br><br><form name=form><textarea name=ta cols=50 rows=13></textarea><br><br><input type=button name=init value=' Go ' onclick=run></form></center></div></body></html> I know theres a function that lets you split variables. If I could use that to split it into a variable for every url. At this point, I have no idea how to make it visit the pages one by one. The reason the div is in there is so that you can change the contains of the div to a frame for each page.The external script in there is something used to generate a list of links, thats not really relevant currently though. Link to comment Share on other sites More sharing options...
Ingolme Posted June 23, 2008 Share Posted June 23, 2008 I'm afraid it's more than Javascript you're going to have to improve. Your HTML is invalid too.As much as I hate frames, that's the only way you're going to be able to open a website without stopping your script from running.I'm not going to make the script for you. I'll just tell you how it can be done and you can program it yourself. If you don't know all the Javascript functions, that's what the W3Schools tutorial and reference are for.Just split the string (function split() in the W3Schools reference) by line breaks (\n) to get an array of URLs, and then use setTimeout or setInterval to load each of the URLs into the frame every 30 seconds. Link to comment Share on other sites More sharing options...
aggixx Posted June 23, 2008 Author Share Posted June 23, 2008 Great, thats what I was hoping to hear. Thanks, Ill look up those functions and try to implement them.Edit: Ok, Im not exactly sure how to put each individual value in an array through the same process. Can someone give me a quick snippet of code, to show me? Link to comment Share on other sites More sharing options...
Jesdisciple Posted June 23, 2008 Share Posted June 23, 2008 Well, you could open the first URL in a new window and change the other window's URL every 30 seconds... That's not a whole lot different from a frame, but it might be better for its simplicity of layout.EDIT: To put a random number from 1 to 10 in each slot of the array arr... var arr = [];for(var i = 0; i < arr.length; i++){ arr[i] = Math.ceil(Math.random() * 10);// Don't worry about the Math functions; they're just details of the example.} Link to comment Share on other sites More sharing options...
aggixx Posted June 23, 2008 Author Share Posted June 23, 2008 Well, you could open the first URL in a new window and change the other window's URL every 30 seconds... That's not a whole lot different from a frame, but it might be better for its simplicity of layout.That would be good, although I have no clue how to do that. Can you just tell me how to put each value in a array through the same process/function? Link to comment Share on other sites More sharing options...
Jesdisciple Posted June 23, 2008 Share Posted June 23, 2008 See above for that... Get it working with the frame and the mods to use a popup will probably be pretty simple. Link to comment Share on other sites More sharing options...
aggixx Posted June 23, 2008 Author Share Posted June 23, 2008 Im not sure I understand that. This is what I want it to do to each url, which I've already split into an array document.form.div.innerHTML="<iframe src=" + splited + " height=100% width=100%></iframe>"setTimeout("var none=1", 37000) PS splited is the name of the array Link to comment Share on other sites More sharing options...
Jesdisciple Posted June 23, 2008 Share Posted June 23, 2008 What part are you having trouble on? Assuming it's the for-loop, I'll break down the loop header... for( var i = 0;// executed once, just before the first run of the loop i < arr.length;// boolean evaluated before each run, loop broken if false i++// executed after each run, makes the boolean false when the last slot is reached){ arr[i] = "whatever you want, can be different each time like a method or a calculation";} Or are you stumbling on the 0-based array system (which names the array slot one less than humans do for each position)? Link to comment Share on other sites More sharing options...
aggixx Posted June 23, 2008 Author Share Posted June 23, 2008 Well I don't know If Im doing this right but this is what I have so far: <html><head><title>PTC Machine</title><script>function run() {var sites=document.form.ta.valuevar xsplited=sites.split("/n")for (x in splited){document.getelementbyid(div).innerHTML="<iframe src=" + splited + " height=100% width=100%></iframe>"setTimeout("var none=1", 37546)}}</script></head><body><form name=form><div id=div><center><script src="http://gmodules.com/ig/ifr?url=http://linkleecher.com/linkleecher.xml&up_url=Please%20Enter%20Website&up_onefilter=.php?ad=&up_output=text&synd=open&w=320&h=110&title=Link+Leecher&border=%23ffffff%7C3px%2C1px+solid+%23999999&output=js"></script><br><br>Please paste the list of links in the box below and hit go.<br><br><textarea name=ta cols=50 rows=13></textarea><br><br><input type=button name=init value=' Go ' onclick=run()></center></div></form></body></html> Link to comment Share on other sites More sharing options...
Jesdisciple Posted June 23, 2008 Share Posted June 23, 2008 First, I see some minor mistakes that will (or could, for the last one) break your code as it is: document.getelementbyid is not a function; you're wanting document.getElementById. "/n" is not a newline; you want "\n". I don't think all systems will use "\n" in your textarea... When they're not communicating on the Internet, Mac uses "\r", Windows uses "\r\n", and Unix (Linux) uses "\n". I don't know whether they are consistent online. Regarding your logic, you're very close, but I have a hunch that you aren't understanding the loops yet. Here's a while loop that does the same thing as the above for loop... var i = 0;while(i < arr.length){ arr[i] = "whatever you want, can be different each time like a method or a calculation"; i++;} This construct would be used so often that the for loop is worth putting in the language as sort of a shorthand. But the construct I used above is also pretty common, and the for-in loop is shorthand for it. Here's the basic for loop for what you want: for(var i = 0; i < splited.length; i++){ document.getelementbyid(div).innerHTML="<iframe src=" + splited[i] + " height=100% width=100%></iframe>" setTimeout("var none=1", 37546)} Your for-in loop also needs a minor modification, because you are setting x equal to each successive slot in splited: for (x in splited){ document.getelementbyid(div).innerHTML="<iframe src=" + x + " height=100% width=100%></iframe>" setTimeout("var none=1", 37546)} Link to comment Share on other sites More sharing options...
aggixx Posted June 23, 2008 Author Share Posted June 23, 2008 splited=sites.split(\n) Firefox is saying that \n is a 'illegal character'.When I change it to "\n", I then get thisError: document.getElementById(div) is nullLine: 14 Link to comment Share on other sites More sharing options...
Ingolme Posted June 23, 2008 Share Posted June 23, 2008 You need quotes around that:splited=sites.split("\n")Oh, and check that the variable div has something assigned to it. Link to comment Share on other sites More sharing options...
aggixx Posted June 23, 2008 Author Share Posted June 23, 2008 You need quotes around that:splited=sites.split("\n")Oh, and check that the variable div has something assigned to it.It does,<div id=div> Link to comment Share on other sites More sharing options...
Ingolme Posted June 23, 2008 Share Posted June 23, 2008 I thought div was a variable.Put it within quotes, it's a string:document.getElementById("div") Link to comment Share on other sites More sharing options...
aggixx Posted June 23, 2008 Author Share Posted June 23, 2008 I thought div was a variable.Put it within quotes, it's a string:document.getElementById("div")Its working. Kind of.Ill upload it so you can see.Edit: Click Here (its bravehost so its not that good)Edit: There seems to be some really weird errors. It seems like it opens the last url, and the timing isnt working, it never changes. Link to comment Share on other sites More sharing options...
justsomeguy Posted June 23, 2008 Share Posted June 23, 2008 Your loop is just setting the innerHTML of the div to the iframe immediately. It's not setting the first one, then waiting, then setting the next one, it just sets them all (so the last one is the one you see). You need to use setTimeout to have it go through them. So the run function would parse up the list of URLs, and then call another function to load the URL. That function would use a counter so it knows which URL to load, and would use setTimeout to run itself again. var splited = false;var nr = 0;function run() { var sites=document.form.ta.value splited=sites.split("\n") nr = 0; showpage();}function showpage(){ document.getElementById("div").innerHTML="<iframe src=" + splited[nr] + " height=65% width=100%></iframe>" nr++; if (nr < splited.length) setTimeout("showpage()", 30000);} Link to comment Share on other sites More sharing options...
aggixx Posted June 23, 2008 Author Share Posted June 23, 2008 yay, Its working. Thanks so much you three!! Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.