Diskuze: Ve scriptu více proměnných

JavaScript JavaScript Ve scriptu více proměnných

Avatar
michales
Člen
Avatar
michales:

Ahoj mám tento script:

function keyWordsearch(){
        gapi.client.setApiKey(\'AIzaSyB7oqNYxEGnskHEpKHSCbIH_-VI4_sJkzg\');
        gapi.client.load(\'youtube\', \'v3\', function() {
                makeRequest();
        });
}
    function makeRequest() {
        var q = $(\'#query\').val();
        var request = gapi.client.youtube.search.list({
                q: q,
                part: \'snippet\',

                maxResults: 1
        });
        request.execute(function(response)  {
                $(\'#results\').empty();
                var srchItems = response.result.items;
                $.each(srchItems, function(index, item) {


                vidThumburl =  item.snippet.thumbnails.default.url;
                vidTitle = item.snippet.title;
                vidThumbimg = \'<pre><iframe id="ytplayer" type="text/html" width="640" height="390"src="http://www.youtube.com/v/\'+ item.id.videoId+\'" frameborder="0"/></pre>\';


              $(\'#results\').append(\'<pre>\' + vidTitle + vidThumbimg +  \'</pre>\');
        });
    });
}

Naplňuji ho pomocí:

<td><label> <input id="query" value="'.$song['Title'].'-'.$song['Artist'].'" type="hidden"/><button id="search-button"   onclick="keyWordsearch()">Search</button></label> </td>

Jak docílit toho aby script bral v potez na co kliknu. Nyní ať kliknu na jakýkoliv řádek v tabulce vždy to bere proměnnou z prvního řadku.

Díky za radu

Odpovědět 13.7.2015 20:59
"Cíle by měly být třešínky na dortech, ne na hromadách hoven."
Avatar
adder
Člen
Avatar
Odpovídá na michales
adder:

Ahoj,

místo id bych dal class, id je unikátní selektor, který by se měl vyskytovat na stránce pouze 1x a měl mít různé hodnoty. Proto ti to bere jen první hodnotu.

Nepůjde to následujícím způsobem?

var q = $(this).val();

Jinak moc nevím... :(

Nahoru Odpovědět 13.7.2015 21:24
I’m going to lay this brick as perfectly as a brick can be laid.
Avatar
michales
Člen
Avatar
Odpovídá na adder
michales:

Bohužel to nefunguje

Nahoru Odpovědět 14.7.2015 6:23
"Cíle by měly být třešínky na dortech, ne na hromadách hoven."
Avatar
David Hynek
Redaktor
Avatar
Odpovídá na michales
David Hynek:

tak jestli dobře koukám, na tvé straně se jen vypisuje kód, který odněkud stáhneš. Takže případná tlačítka jsou v načítaném kódu. S tímhle ti si poradí jen tam odkud to stahuješ...

Nahoru Odpovědět 14.7.2015 7:34
Čím víc vím, tím víc věcí nevím.
Avatar
Fredep
Redaktor
Avatar
Odpovídá na michales
Fredep:

Ahoj, moc se mi v tom teď nechce šťárat, ale zkus parametr onclick změnit na

onclick="keyWordsearch(this)

a ve funkci poté dostaneš ten element, na který se kliklo. Pokud chceš tedy získat value z inputu vedle použij

$(this).parent().find('input').val();

Funkci tedy upravíš na

function keyWordsearch(element){
        gapi.client.setApiKey(\'AIzaSyB7oqNYxEGnskHEpKHSCbIH_-VI4_sJkzg\');
        gapi.client.load(\'youtube\', \'v3\', function() {
                makeRequest( $(this).parent().find('input').val() ); // Předáme přímo hodnotu
        });
}
    function makeRequest(q) {
        // V proměnné q je uložena hodnota, na kterou jsi klikl.
Nahoru Odpovědět  +1 14.7.2015 10:02
Týmová práce je důležitá proto, aby bylo možno obvinit z neúspěchu někoho jiného.
Avatar
Fredep
Redaktor
Avatar
Odpovídá na Fredep
Fredep:

Omlouvám se, udělal jsem chybu. Akce onclick zůstává stejná, ale potom již nepoužiješ this, ale ten element...

$(element).parent().find('input').val();

tedy..

makeRequest( $(element).parent().find('input').val() ); // Předáme přímo hodnotu
Nahoru Odpovědět 14.7.2015 12:58
Týmová práce je důležitá proto, aby bylo možno obvinit z neúspěchu někoho jiného.
Avatar
michales
Člen
Avatar
Odpovídá na Fredep
michales:

Bohužel ani toto mi nefunguje.

echo'</td><td><label> <input id="query" value="'.$song['Title'].'-'.$song['Artist'].'" type="image" name="query" onclick="keyWordsearch(this)" src="img/play.png" width="20"/></label> </td

js:

function keyWordsearch(){
        gapi.client.setApiKey(\'AIzaSyB7oqNYxEGnskHEpKHSCbIH_-VI4_sJkzg\');
        gapi.client.load(\'youtube\', \'v3\', function() {
                makeRequest( $(element).parent().find(\'input\').val() );
        });
}
    function makeRequest() {
        var q = $(\'#query\').val();
        var request = gapi.client.youtube.search.list({
                q: q,
                part: \'snippet\',

                maxResults: 1
        });
Nahoru Odpovědět 14.7.2015 13:21
"Cíle by měly být třešínky na dortech, ne na hromadách hoven."
Avatar
Fredep
Redaktor
Avatar
Odpovídá na michales
Fredep:
function keyWordsearch(element){
        gapi.client.setApiKey(\'AIzaSyB7oqNYxEGnskHEpKHSCbIH_-VI4_sJkzg\');
        gapi.client.load(\'youtube\', \'v3\', function() {
                makeRequest( $(element).parent().find(\'input\').val() );
        });
}
    function makeRequest(q) {
        var request = gapi.client.youtube.search.list({
                q: q,
                part: \'snippet\',

                maxResults: 1
        });
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět  +1 14.7.2015 13:30
Týmová práce je důležitá proto, aby bylo možno obvinit z neúspěchu někoho jiného.
Avatar
michales
Člen
Avatar
Nahoru Odpovědět 14.7.2015 13:34
"Cíle by měly být třešínky na dortech, ne na hromadách hoven."
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 9 zpráv z 9.