Avatar billede rotco Juniormester
28. januar 2013 - 18:19 Der er 12 kommentarer og
1 løsning

Function og $(this) problem!

Hejsa,

Jeg er ret ny til javascript, så derfor kan problemet være komplet latterligt nemt, men jeg fatter det simpelthen ikke. Jeg har søgt på Google, og jeg har forsøgt at finde ud af hvad problemet er i en del timer nu - jeg må simpelthen give op, og spørge jer.

Problemet er at jeg er i gang med en smule AJAX, hvor målet er at opdatere en database via en php-fil - dog ser det ikke ud til at jeg kan få mine informationer med fra de forskellige input, via min javascript/jQuery.

Lad os antage at jeg har 5 inputs (nogle gange færre, nogle gange flere - det kommer an på hvor mange rækker der er i databasen)

<input type="submit" value="Godkend 1" class="InputFelt" id="1" onclick="Accept()" />
<input type="submit" value="Godkend 5" class="InputFelt" id="5" onclick="Accept()" />
<input type="submit" value="Godkend 9" class="InputFelt" id="9" onclick="Accept()" />
<input type="submit" value="Godkend 31" class="InputFelt" id="31" onclick="Accept()" />
<input type="submit" value="Godkend 16" class="InputFelt" id="16" onclick="Accept()" />



Det jeg her vil forsøge at gøre, er at hente attributten "id" - alt efter hvilken en af dem der bliver klikket på.

Indtil videre har jeg følgende:

function Accept(){
var term_name = $(".ProfilInput").attr("name");

.....en masse kode
}

Jeg ved godt at der skal laves en variabel lignende det her:

var term_name = $(this).attr("name");

Men det virker simpelthen ikke. Variablen som står øverst finder godt nok et id, men det er der første id (den første input) - uanset hvilken en af de 5 overstående inputs der klikkes på.

Når man klikker på
<input type="submit" value="Godkend 16" class="InputFelt" id="16" onclick="Accept()" />
ønsker jeg at id 16 bliver ført videre osv. osv.

Nogen der kan hjælpe mig? Det er et meget stort problem - 200 points - uanset sværhedsgraden, fordi for mig - er det svært.
Avatar billede erikjacobsen Ekspert
28. januar 2013 - 20:31 #1
Hvis du skriver:
    onclick="Accept(this)" 
kan du aflæse knappen som parameter i funktionen.
Avatar billede olebole Juniormester
28. januar 2013 - 20:48 #2
<ole>

Et HTML-elements id attribut må ikke begynde med et tal. Den skal begynde med et bogstav (a-z) eller en underscore.

Sværhedsgraden er i øvrigt det eneste, der bør være afgørende for pointantallet. Hvor presserende eller stort problemet måtte være er ligegyldigt  =)

/mvh
</bole>
Avatar billede rotco Juniormester
28. januar 2013 - 22:13 #3
Det skal jeg lige huske på ole :) Tak for det. Jeg har nu skiftet til attributten name i stedet for.

erikjacobsen - Jeg har forsøgt med det du skrev - det virker stadig ikke.

<input class='ProfilInput' type='submit' name='1' class='afvis' value='Godkend' onclick='Accept(this)' />

og java script:

function Accept(){
  var term_name = $(this).attr("name");

  ... en masse kode
}

Når jeg laver det om til overstående med "this" - så reagere  scriptet slet ikke. Der sker absolut ingenting.
Avatar billede erikjacobsen Ekspert
28. januar 2013 - 22:16 #4
Du skal lige have en parameter på funktionen:

function Accept(butt){
  var term_name = butt.name;

  ... en masse kode
}
Avatar billede olebole Juniormester
28. januar 2013 - 22:23 #5
@rotco: JavaScript koden, du viser i #3 er ikke almindelig JavaScript. Den er knyttet til JS-biblioteket, som hedder jQuery.

jQuery er også skrevet i JS, men bruger sin egen, proprietære syntaks. Du kan ikke bruge jQuery syntaks uden at importere biblioteket.

Hvis du gerne vil lære JavaScript, bør du ikke kaste dig ud i jQuery nu. Lær først helt almindelig JavaScript, og når du er blevet rigtig god til dét, har du baggrunden og forståelsen, som er nødvendig for at skrive god kode med jQuery  =)
Avatar billede rotco Juniormester
30. januar 2013 - 14:46 #6
Tak olebole - jeg vil gerne lære JavaScript - problemet er egentlig bare min manglende tid og et personligt projekt der skal på benene nu her.

Jeg bør måske ikke selv rode med jQuery endnu, når jeg ikke er så god til JavaScript, men hér er det nok min tidsmangel der presser sig på :)

erikjacobsen - det virker stadig ikke, så jeg vælger lige at smide ALT kode relateret til den her function ind, så jeg måske kan fidne ud af/forstå hvorfor det er et problem for mig at få til at virke. Jeg værdsætter jeres hjælp!

<script type="text/javascript">

function rejectFriend(afvis){
//var term_name = $(".ProfilInput").attr("name");
var term_name = afvis.name; //Tester ny variabel


if(term_name != '')
{
$('#propspectDiv').html('<p id="ven">Afviser...<br /><img src="images/ajax-loader.gif" /></p>');

$.ajax({
contentType: "application/x-www-form-urlencoded;charset=ISO-8859-15",
url : 'data.php',
data:{

"afvis" : term_name
},
success : function(data){
window.setTimeout(function(){

$('#propspectDiv').html(term_name); //printer lige det id ud der blev behandlet
$('#data').css("display","block");
$('#data').html(data);
}, 500);
}
});
}
}
</script>

<input class='ProfilInput' type='submit' name='1' class='afvis' value='Afvis' onclick='rejectFriend(afvis)' />



Hvad gør jeg galt? :-P MAnge tak for jeres hjælp.
Avatar billede erikjacobsen Ekspert
30. januar 2013 - 21:37 #7
Når der står $-kode, der tyder på JQuery, så giver jeg op. Mit unge liv skal bruges til noget andet... ;)
Avatar billede olebole Juniormester
30. januar 2013 - 22:09 #8
Du blander jQuery- og alm. JavaScript-kode sammen - og du er spejlblank på begge områder. Det kan der ikke komme noget godt ud af.

Hvad årsagen er til, at du gerne vil lave det, har ikke den store betydning. Du er nødt til at lære noget helt grundlæggende JavaScript/DOM, før du kaster dig ud i sådan et projekt.

Jeg er vild med den gamle Bugatti Royale, men jeg bør nok prøve at bygge et par sæbekassebiler, før jeg kaster mig ud i at bygge en kopi af originalen  *o)
Avatar billede januskh Nybegynder
02. februar 2013 - 18:58 #9
Jeg kan ikke se at du har nogen attribut "Name" på din knapper.

Måske $(this).id vil give noget?
Avatar billede olebole Juniormester
03. februar 2013 - 17:45 #10
januskh: Nej, det vil det ikke. Prøv at læse tråden  *o)
Avatar billede rotco Juniormester
12. april 2013 - 10:49 #11
Beklager at det har taget SÅ lang tid at svare på tråden. Jeg fandt aldrig ud af det, men besluttede mig for at det måske var lidt over mit niveau endnu, så jeg venter lidt med jQuery osv.

Smid et svar olebole og erikjacobsenerikjacobsen :)
Avatar billede olebole Juniormester
12. april 2013 - 12:23 #12
Ellers tak. Hverken Erik eller jeg samler point. Læg bare selv et svar og accepter det, så tråden lukkes  =)
Avatar billede rotco Juniormester
01. juni 2013 - 16:17 #13
Svar :)

Mange tak for det ellers!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester