user2759825
user2759825

Reputation: 11

How to make it simpler js with php loop

function displayResult1(szybkosc) {
    var n = value = szybkosc;
    var u = n.split("|")[1]; 
    document.getElementById('result1').innerText = ' '+u;
}

function displayResult2(szybkosc) {
    var n = value = szybkosc;
    var u = n.split("|")[1];
    document.getElementById('result2').innerText = ' '+u;
}

The JavaScript code works but I need to do new function for each result, is it anyway to make it quicker?

$i = 1;
while($i < 10){
    $result = "result" . $i;
    $displayResult = "displayResult" . $i;
    echo "user number ".$i."
    <input type='radio' name='szybkosc' onclick='$displayResult(this.value)' value='$sp1[id]|1|$row[id]' />
    <input type='radio' name='szybkosc' onclick='$displayResult(this.value)' value='$sp1[id]|3|$row[id]' />
    <span id='$result'></span></br>
    <input type='radio' name='ss' value='$sp1[id]|1|$row[id]' />
    <input type='radio' name='ss' onclick='$displayResult(this.value)' value='$sp1[id]|1|$row[id]' />";
    $i++;
}

Upvotes: 0

Views: 216

Answers (2)

Vivek Jain
Vivek Jain

Reputation: 3889

  1. Why do you have two functions for the same purpose?
  2. What is the purpose of using value here var n = value = szybkosc;?
  3. Your code does not have matching braces and proper html tags.

Just pass the id as the second parameter:

function displayResult(szybkosc, id) {
    var n = szybkosc;
    var u = n.split("|")[1];
    document.getElementById(id).innerText = ' ' + u;
}

The PHP Code is updated as:

$i = 1;
while($i < 10){
    $result = "result" . $i;
    $displayResult = "displayResult" . $i;
    echo "user number ".$i."
    <input type='radio' name='szybkosc' onclick='$displayResult(this.value)' value='$sp1[id]|1|$row[id]' />
    <input type='radio' name='szybkosc' onclick='$displayResult(this.value)' value='$sp1[id]|3|$row[id]' />
    <span id='$result'></span></br>
    <input type='radio' name='ss' value='$sp1[id]|1|$row[id]' />
    <input type='radio' name='ss' onclick='$displayResult(this.value, "result' . $i .'")' value='$sp1[id]|1|$row[id]' />";
    $i++;
}

Upvotes: 1

shasi kanth
shasi kanth

Reputation: 7102

You don't need to use multiple js functions for each of the items in your php loop. Just use this single js function and pass parameters to it accordingly:

function displayResult(szybkosc, id)
   var n=value=szybkosc;
   var u=n.split("|")[1]; 
   document.getElementById('result'+id).innerText = ' '+u;
}

And modify the php loop code that calls the js function:

$i = 1;
    while($i     $result = "result" . $i;
    $displayResult = "displayResult" . $i;
    echo "user number ".$i."
    input type='radio' name='szybkosc' onclick='$displayResult(this.value, '.$i.')' value='$sp1[id]|1|$row[id]' />
    input type='radio' name='szybkosc' onclick='$displayResult(this.value, '.$i.')' value='$sp1[id]|3|$row[id]' />  
   input type='radio' name='ss' value='$sp1[id]|1|$row[id]' />
   input type='radio' name='ss' onclick='$displayResult(this.value, '.$i.')' value='$sp1[id]|1|$row[id]' />";
   $i++;
}

By the way, your php while loop has no opening brace.

Upvotes: 0

Related Questions