www.webdeveloper.com
Results 1 to 12 of 12

Thread: [RESOLVED] Using Javascript Variable in document.form.name.etc

  1. #1
    Join Date
    Jun 2008
    Posts
    6

    resolved [RESOLVED] Using Javascript Variable in document.form.name.etc

    Hi

    I have the need to place a variable into document.form.name (no idea what this is called). Just wondering if this is possible.

    The scenario is i have a bunch of questions that are dynamically taken from a database. Each question has a number of radio buttons (which varies based on the question). The radio button group name is q plus a number that is sequentially incremented by 1 (i.e q1, q2, etc).

    What im trying (unsuccessfully) to do is something similar:
    Code:
    checkRadio = function(numQuestions)
    {
    
    for (var i=0, i<=numquestions, i++)
    {
    
    document.form.q+i.checked
    
    }
    Hope that makes sense.

  2. #2
    Join Date
    Aug 2007
    Posts
    3,767
    document.form["q"+i].checked
    Great wit and madness are near allied, and fine a line their bounds divide.

  3. #3
    Join Date
    Jun 2008
    Posts
    6
    awesome. Worked like a charm. Thanks heaps.

  4. #4
    Join Date
    Jun 2008
    Posts
    6
    How about for a specific button within the group:

    Code:
    //How it would look static
    document.form.q1[0].checked
    
    //What I'm trying to do
    document.form.q+variable[anotherVariable].checked
    
    //How I'm thinking should look
    document.form["q"+questionNo+[p]].checked
    Thanks

  5. #5
    Join Date
    Mar 2005
    Location
    Sydney, Australia
    Posts
    7,974
    document.form["q"+questionNo[p]].checked
    Stephen

  6. #6
    Join Date
    Jun 2008
    Posts
    6
    document.form["q"+questionNo[p]].checked
    Thanks for the reply felgall but i am getting an "is undefined" error using that format. Tried it with a static value:

    document.form["q"+questionNo[1]].checked

    but got the same error. (Error: document.form["q" + questionNo[1]] is undefined)

  7. #7
    Join Date
    Aug 2007
    Posts
    3,767
    Would you show some of the HTML you are trying to reference.
    Great wit and madness are near allied, and fine a line their bounds divide.

  8. #8
    Join Date
    Mar 2005
    Location
    Sydney, Australia
    Posts
    7,974
    Perhaps split it into two statements so you can see what part has the error.


    var x = "q"+questionNo[1];
    document.form[x].checked

    The error is almost certainly caused by questionNo[1] not containing what you expect it to. Are you sure you are not after the value in questionNo[0]
    Stephen

  9. #9
    Join Date
    Jun 2008
    Posts
    6
    I decided to show you the JavaScript as I have tested the other code and it definitely works.

    Code:
    checkRadio = function(currentCat, totalQ, currentQ)
    	{
    	
    	//Gets the first question of sub cat set
    	var startQ = totalQ - currentQ;
    	
    	//Variable used to allow next set of questions to show
    	var display = true;
    	
    	for (var i=0;i<=currentQ-1;i++)
    		{
    		
    		//Resets var for each question
    		var unChecked = 0;	
    		
    		//Sets the question number
    		var questionNo = startQ+i;
    		
    		//Gets the number of radio buttons
    		var questionLength = document.auditForm["q"+questionNo].length;
    		
    		for (var p=0;p<=questionLength-1;p++)
    			{
    	
    			if (document.auditForm["q"+questionNo[p]].checked == false)
    				{
    					
    				unChecked++;
    					
    				}
    				
    			}
    			
    			if (unChecked >= questionLength)
    				{
    				alert("Please select an answer for question "+questionNo);
    				display = false;
    				break;
    		
    				}	
    			
    		}
    	if (display == true)
    		{
    		displayNext(currentCat);
    		}
    	
    	}
    The problem i have is isolated to here:

    Code:
    if (document.auditForm["q"+questionNo[p]].checked == false)
    If I use a static radiogroup it works perfect i.e for question 1:

    Code:
    if (document.auditForm.q1[p].checked == false)
    If that doesnt help ill post the php/html

    Thanks Pete

  10. #10
    Join Date
    Aug 2007
    Posts
    3,767
    Try
    Code:
    if (document.auditForm["q"+questionNo][p].checked == false)
    Great wit and madness are near allied, and fine a line their bounds divide.

  11. #11
    Join Date
    Jun 2008
    Posts
    6
    Thanks Declan1991. After playing with different combos for about 30 mins that worked was just about to post it but you beat me to it :P.

    Thanks to all who posted all working perfect now.

  12. #12
    Join Date
    Apr 2013
    Posts
    1
    Hi,

    Could you please help me on this? I am having sikilar problem with TypeError: document.form1.elements[nf] is undefined, here is my code:

    function GetAverage(){
    sum=0;
    tot=0;
    n=1;
    x=0;
    nf="";
    for(i=0;i<document.form1.elements.length;i++){
    ele=document.form1.elements[i];
    if(ele.type=='text' && !isNaN(parseInt(ele.value))){
    if (parseInt(ele.value)!=0) {
    sum+=1;
    tot+=parseInt(ele.value);
    }
    x=n%7;
    nf="nf"+n;
    if (x==0) {
    if(sum!=0){
    prom=tot/sum;
    document.form1.elements[nf].value=prom; /* HERE WHERE I GET THE PROBLEM */
    sum=0;
    tot=0;
    }
    else{
    document.form1.elements[nf].value=0;
    }
    }
    n=++n;
    }
    }

    }

    Thank you

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Posting Permissions

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



Recent Articles