2010-08-09 12 views
0

Ok, j'ai cette fonction ce qu'elle fait prend la valeur de l'heure d'id, de l'utilisateur, du titre, et du bodytext.Répéter la fonction chaque ID nommé "" avec jquery

Fonction à insérer dans sql.

function getblogpost() { 

    var date = $('#time').text(); 
    var user = $('#user').text(); 
    var title = $('#title').text(); 
    var textbody = $('#bodytext').text(); 
    var postid = $('#pid').text(); 
    dbsql.transaction(
     function(transaction) { 
      transaction.executeSql(
       'INSERT INTO blogpost (postid, date, user, title, textbody) VALUES (?, ?, ?, ?, ?);', 
       [postid, date, user, title, textbody], 
       function(){ 

       }, 
       errorHandler 
      ); 
     } 
    ); 

    return false; 

} 

Et ce serait le html que la fonction ci-dessus fonctionne. Le problème que j'ai, c'est que je ne sais pas comment répéter une fonction pour chaque div nommé main. En ce moment, il ne le fait que pour la première div principale, mais passe maintenant à la prochaine div principale.

Quelle pourrait être la meilleure façon de procéder?

Répondre

-1

Vous ne pouvez pas dupliquer des ID comme ça: cela rend votre document HTML invalide et ne vous causera que des problèmes.

Vous devez utiliser l'itération. Nommez chaque ID div main1, main2, etc ... Ensuite, vous pouvez collecter toutes les données dont vous avez besoin.

+0

Je pensais faire quelque chose comme ceci, mais alors je devrais avoir fait une sorte de système d'incrémentation pour aller avec. mais je fais comme cette idée que maintenant vous pouvez trouver des identifiants spécifiques parmi beaucoup. Merci pour l'aide! –

+0

Qu'est-ce qui se passe avec le vote baissier? Tout ce que j'ai dit était vrai. – Stephen

0

Au lieu des ID, utilisez des classes.

$('.main').each(function(){ 
    //do something with $(this) 
}); 
2

Tout d'abord, vous ne pouvez pas avoir plus d'un élément avec un seul ID. Vous devez utiliser des classes.

le HTML peut ressembler à ceci:

<div class="main"> 
    <div class="time">some text..</div> 
    <div class="user">some text..</div> 
    <div class="title">some text..</div> 
    <div class="bodytext">some text..</div> 
    <div class="pid">some text..</div> 
</div> 

et le code comme ceci:

function getblogpost(div) { 

    var date = $(div).find('.time').text(); 
    var user = $(div).find('.user').text(); 
    var title = $(div).find('.title').text(); 
    var textbody = $(div).find('.bodytext').text(); 
    var postid = $(div).find('.pid').text(); 
    dbsql.transaction(
     function(transaction) { 
      transaction.executeSql(
       'INSERT INTO blogpost (postid, date, user, title, textbody) VALUES (?, ?, ?, ?, ?);', 
       [postid, date, user, title, textbody], 
       function(){ 

       }, 
       errorHandler 
      ); 
     } 
    ); 

    return false; 

} 

puis appelez comme ceci:

$('.main').each(function(){ 
    getblogpost(this); 
}); 
+0

C'est si facile merci beaucoup! –

+0

Je ne sais pas pourquoi mais chaque fois que j'essaie ce $ ('. Main'). Each (function ({ getblogpost (this); })); il arrête le démarrage de SQL. –

+0

n'a jamais eu l'intention de le réparer en utilisant $ ('. Main'). Each (function() {getblogpost (this);}); –

Questions connexes