PHP.EE FOORUM   
Nimi:   Pass:   Mäleta mind! 
   Teemad | php.ee esilehele | registreeri | Märgi kõik teemad loetuks | #php.ee Skype vestlus | RSS
UUS TEEMA  OTSI  Lehekülgi: 1
Funktsioon väärtus ja array
Postitaja: joker 2015-07-16 11:37:32
<a href="javascript:void(0);" onClick="changeUrl2('s', 2);">Test</a>

var changeUrl2 = function(a, e)
{
var array = [];

//If a array, then use only this
if (typeof a === 'object') {
array = a;
}
else {
array = {a:e};
}
alert (JSON.stringify(array));
}


Probleem:
Alert annab tulemuseks {"a":2}
Samas peaks tulemus olema {"s":2}

Kuidas key defineerida, et saada soovitud tulemus?!

RE: Funktsioon väärtus ja array
Postitaja: rtfm 2015-07-16 13:37:19

javascripti arrays ei ole keysi ja sul on seal array [] ja object {} segi läinud , objektis on võtmed olemas
RE: Funktsioon väärtus ja array
Postitaja: joker 2015-07-16 14:20:46
Mitte ei mõika, kuidas peaks js array toppima, et asjad õigelt tööle hakkaksid. Olen nii ja teisiti ja kolmandat moodi proovinud ... tulemuseks ikka saast!

Töötama peaks script kahte moodi:

changeUrl2('s', 2);
//Source url http://.../?view=demo
//Result url http://.../?view=demo&s=2

changeUrl2({'s':2, 't':15});
//Source url http://.../?view=demo
//Result url http://.../?view=demo&s=2&t=15

changeUrl2({'s':2, 't':15});
//Source url http://.../?view=demo&t=15
//Result url http://.../?view=demo&s=2


PHP kood:
 
var changeUrl2 = function(ae)
{    
    var array = {}; 
    
    
//If a array, then use only this
    
if (typeof a === 'object') {
        array = 
a;
    }
    else {
        array = {
a:e};
    }
    
    
//script gets the src attribute based on ID of page's script element:
    
var requestURL window.location.href;
    
    
//Check anchor exist ...
    
if (requestURL.indexOf("#")  > 0) {
        
//If exist, then remove this with text
        
requestURL requestURL.substr(0requestURL.indexOf("#") + 1);
    }

    var 
queryArray = [];
    
    if (
requestURL.indexOf("?")  > 0) {
        
//next use substring() to get querystring part of src
        
queryArray requestURL.split("?");
    }
    else
    {
        
queryArray[0] = requestURL;
    }

    
//Next split the querystring into array
    
var params queryArray[1].split("&");
    
    
//Get values array
    
var GET = {};

    
//Next loop through params
    
for(var 0params.lengthi++)
    {     
         
//Load inserted key
         
var key params[i].substring(0,params[i].indexOf("="));

         if (
key != '') {
             
GET[key] = params[i].substring(params[i].indexOf("=") + 1params[i].length);
         }
    }

    
//Always in resort must be first page
    
if ('page' in GET) {
        
delete GET['page'];
    }
    
//Remove filter
    
if ('filter' in GET) {
        
delete GET['page'];
    }
    
    
//Change or remove values
    
$.each(array, function(kv) {    
        if (
k in GET && GET[k] == v) {
                
delete GET[k];    
        }
        else {
            
GET[k] = v;
        }
     });

     
queryArray[2] = '';
    
    
//Write parameters URL syntax
     
$.each(GET, function(kv) {    
        
queryArray[2] +=  '=' '&';
     });
    
    
//Put together all info
     
queryArray[0] = queryArray[0] + '?' queryArray[2];
    
    
//Redirect ...
    
window.location queryArray[0].substring(0queryArray[0].length 1);
}

Viimati muudetud: 16-07-2015 14:33:25
Muutja: joker
Põhjus:

RE: Funktsioon väärtus ja array
Postitaja: rtfm 2015-07-16 16:06:30
var array = {};

juba see on sul vale sest ei ole array vaid on objekt. võta https://jsfiddle.net/ ja tee näide siis ehk keegi viitsib koodi lugeda ja kaasa mõtelda. eesmärk on sul mis?
RE: Funktsioon väärtus ja array
Postitaja: joker 2015-07-16 16:47:28
Sain poinile pihta.

Pidin lihtsalt defineerima var array = new Object();
Sellega kaasnevalt sai ka tulemus korda.
RE: Funktsioon väärtus ja array
Postitaja: rtfm 2015-07-17 00:57:48
TSITEERITUD:
Sain poinile pihta.

Pidin lihtsalt defineerima var array = new Object();
Sellega kaasnevalt sai ka tulemus korda.


ei saanud ju {} on sama mis new Object(); ja ei ole array
RE: Funktsioon väärtus ja array
Postitaja: joker 2015-07-17 12:32:40
Proovisin valmis koodi ka https://jsfiddle.net/ üles panna, kuid programm ütleb, et on keelatud lehekülje URLi muutmine.

Kood kukkus välja järgmine ...


PHP kood:
 
var changeUrl2 = function(ae)
{    
    var array = new 
Object(); 
    
    
//If a array, then use only this
    
if (typeof a === 'object') {
        array = 
a;
    }
    else {
        array[
a] = e;
    }
    
    
//script gets the src attribute based on ID of page's script element:
    
var requestURL window.location.href;
    
    
//Check anchor exist ...
    
if (requestURL.indexOf("#")  > -1) {
        
//If exist, then remove this with text
        
requestURL requestURL.substr(0requestURL.indexOf("#") + 1);
    }

    var 
queryArray = [];
    
    if (
requestURL.indexOf("?")  > -1) {
        
//next use substring() to get querystring part of src
        
queryArray requestURL.split("?");
    }
    else
    {
        
queryArray[0] = requestURL;
    }
    
    
//IF exist & mark, then do changes
    
if (queryArray[1].indexOf("&") > -1)
    {
        
//Next split the querystring into array
        
var params queryArray[1].split("&");
        
        
//Get values array
        
var GET = {};

        
//Next loop through params
        
for(var 0params.lengthi++)
        {     
             
//Load inserted key
             
var key params[i].substring(0,params[i].indexOf("="));

             if (
key != '') {
                 
GET[key] = params[i].substring(params[i].indexOf("=") + 1params[i].length);
             }
        }
        
        
//Change or remove values
        
$.each(array, function(kv) {    
            if (
k in GET && GET[k] == v) {
                    
delete GET[k];    
            }
            else {
                
GET[k] = v;
            }
         });
    }
    else {
        
GET = array;
    }

    
//alert(JSON.stringify(GET));
    
    //Write URL syntax
    
queryArray[2] = '';
    
    
//Write parameters URL syntax
     
$.each(GET, function(kv) {    
         if (
typeof v !== 'object') {
             
queryArray[2] +=  '=' '&';
         }
     });
    
    
//Put together all info
     
queryArray[0] = queryArray[0] + '?' queryArray[2];
    
    
//Redirect ...
    
window.location queryArray[0].substring(0queryArray[0].length 1);
}


Kasutamine:

Javascript: changeUrl2('s', 2);
Source url: http://.../?view=demo
After change URL: http://.../?view=demo&s=2

Javascript: changeUrl2({'s':2, 't':15});
Source url: http://.../?view=demo
After change URL: http://.../?view=demo&s=2&t=15

Javascript: changeUrl2({'s':2, 't':15});
Source url: http://.../?view=demo&t=15
After change URL: http://.../?view=demo&s=2

Viimati muudetud: 17-07-2015 12:39:40
Muutja: joker
Põhjus:

RE: Funktsioon väärtus ja array
Postitaja: lkjlökjölköl 2015-07-25 21:49:57
TSITEERITUD:
Sain poinile pihta.

Pidin lihtsalt defineerima var array = new Object();
Sellega kaasnevalt sai ka tulemus korda.


:D :D :D
miks?
RE: Funktsioon väärtus ja array
Postitaja: - 2015-08-03 11:23:12

var queryArray = [];

if (requestURL.indexOf("?") > -1) {
//next use substring() to get querystring part of src
queryArray = requestURL.split("?");
}
else
{
queryArray[0] = requestURL;
}

Wtf? Miks mitte lihtsalt

var queryArray = requestURL.split("?");


Leheküljed: 1

©2002-2013 Martin Rebane & PHP.ee kaasautorid
  0.0866801738739