Djot (Normal User)
Rookie
Messaggi: 28
Iscritto: 14/02/2017
|
Salve a tutti, Sto sviluppando una piccola pagina con una barra di ricerca, l'utente inserisce una qualsiasi parola, e il sito riporta i primi 5 video di youtube con tale parola chiave (in base al numero di visualizzazioni). Il problema è che ciò non avviene, ogni volta che viene digitata una qualsiasi parola sulla barra di ricerca la console riporta l'errore:
TypeError: Cannot read property 'search' of undefined app.js:6 at HTMLFormElement.<anonymous> (file:///..../app.js:6:42)
Vi allego qui sotto il sorgente della parte Javascript, se potete darmi delle spiegazioni ve ne sarei molto grato.
Codice sorgente - presumibilmente Javascript |
function tplawesome(e,t){res=e;for(var n=0;n<t.length;n++){res=res.replace(/\{\{(.*?)\}\}/g,function(e,r){return t[n][r]})}return res} $(function() { $("form").on("submit", function(e) { e.preventDefault(); var request = gapi.client.youtube.search.list({ part: "snippet", type: "video", q: encodeURIComponent($("#search").val()).replace(/%20/g, "+"), maxResults: 5, order: "viewCount", }); request.execute(function(response) { var results = response.result; $("#results").html(""); $.each(results.items, function(index, item) { $.get("tpl/item.html", function(data) { $("#results").append(tplawesome(data, [{"title":item.snippet.title, "videoid":item.id.videoId}])); }); }); resetVideoHeight(); }); }); $(window).on("resize", resetVideoHeight); }); function resetVideoHeight() { $(".video").css("height", $("#results").width() * 9/16); } function init() { gapi.client.setApiKey("AIzaSyAN11KrZnAJtWZe8JFV5lpPRsDOQWzOkV8"); gapi.client.load("youtube", "v3", function() { }); }
|
|
|
Thejuster (Admin)
Guru^2
Messaggi: 2305
Iscritto: 04/05/2008
|
è normale che la funzione res.replace non abbia il doppio apice?
in più, più che un replace quello mi sembra un Regex.
{res=res.replace(/\{\{(.*?)\}\}/g,function(e,r){return t[n][r]})}return res}
Ti consiglio di rivedere bene questa funzione res.replace.
Ultima modifica effettuata da Thejuster il 08/11/2018 alle 21:49
|
|
Djot (Normal User)
Rookie
Messaggi: 28
Iscritto: 14/02/2017
|
Codice sorgente - presumibilmente Plain Text |
{res=res.replace("/{{(.*?)}}/g","function(e,r){return t[n][r]}")}return res}
|
In questo modo intendi?
|
|
Thejuster (Admin)
Guru^2
Messaggi: 2305
Iscritto: 04/05/2008
|
Si ma comunque a mio parere è sbagliato.
Esegui un replace come fosse un regex.
Quella stringa in replace dovrebbe stare in un regex.
Cerca online javascript regex.
Ed il risultato lo recupera in automatico
|
|
Djot (Normal User)
Rookie
Messaggi: 28
Iscritto: 14/02/2017
|
Quindi dovrei usare un regex al posto del replace?
|
|
Thejuster (Admin)
Guru^2
Messaggi: 2305
Iscritto: 04/05/2008
|
Si ma...
Devi sapere che ci vuoi fare.
esiste compile, exec, test e ToString.
Dipende cosa vuoi che quella funzione faccia.
Ti consiglio di dare una lettura prima alla documentazione di quell'esempio se ne ha una.
O di leggerti una guida in javascript per il regex e capire cosa ti server per ottenere quello che cerchi di fare.
|
|