2010-12-03 5 views
0

J'ai une question sur la façon de lire la chaîne entre une balise, par exemple.Javascript obtient une valeur de chaîne dans une balise

Devices connecting to HOME <a onclick="kmt_Toggle('BOX01', this)" class="cs_answer_link" value="[Show me how to download and install my map..]">[Show me how to download and install my map..]</a><br /> 
<br /> 
<div class="cs_answer_secondAccordion" id="BOX01" style="display: none;"> 
Steps for downloading and installing a map... 
</div> 

Mon code simple, lorsque l'utilisateur clique sur la balise, la classe div montrera, et le changement Montrez-moi comment télécharger et installer la chaîne de carte dans une balise de fermeture. Lorsque les utilisateurs cliquent à nouveau, la «fermeture» actuelle deviendra «long texte original». Mon principal problème est que Comment je peux lire la chaîne entre une étiquette, merci. Je ne peux pas utiliser JQuery

function kmt_Toggle(obj, aTag) { 
    var el = document.getElementById(obj); 
    if (el.style.display != 'none') { 
     el.style.display = 'none'; 
     //var tagString=document.ge(aTag).valueOf(); 

    // aTag.innerHTML='[more..]'; 
    aTag.innerHTML= tagString; 
    } 
    else { 
     el.style.display = ''; 
     aTag.innerHTML='[close..]'; 
    } 
    } 

Bonjour les gars, merci. Je pense que je n'ai pas clarifié ma question. Je veux construire une fonction de bascule dans ce Javascript, si les gens clique sur une étiquette, par exemple,

<a onclick="kmt_Toggle('BOX01', this)" class="cs_answer_link" value="[Show me how to download and install my map..]">[Show me how to download and install my map..]</a> 

Il montrera ma div si mon div style = a pas; et le changement Montrez-moi comment télécharger et si les utilisateurs cliquent sur le lien à nouveau installer la carte dans « close »

étapes pour télécharger et installer une carte ...

, il va revenir à la « me montrer comment télécharger et installer la carte "et cacher ma div.

J'ai essayé de construire quelque chose en suivant une solution idéale. Ça ne marche pas.

Cheers, Qing

Répondre

1

Tout d'abord, l'attribut value d'un élément a n'est pas officiellement normalisé par le W3C. Vous n'en avez pas besoin.

Cela dit, quelques lignes de code qui pourrait fonctionner sont:

// innerHTML way 
aTag.originalInnerHTML = atag.innerHTML; // to save the innerHTML 
aTag.innerHTML = '[close..]';   // to add new link text 
aTag.innerHTML = aTag.originalInnerHTML; // to restore the innerHTML 


// W3C DOM way 
// Save 
var cur = aTag.firstChild; 
aTag.oldChildNodes = []; 
while(cur) { 
    aTag.oldChildNodes.push(cur); 
    cur = cur.nextSibling; 
} 

// Add new link text 
while(aTag.lastChild) aTag.removeChild(atag.lastChild); 
aTag.appendChild(document.createTextNode('[close..]')); 

// Restore 
while(aTag.lastChild) aTag.removeChild(atag.lastChild); 
for(var i = 0; i < aTag.oldChildNodes.length; ++i) { 
    aTag.appendChild(aTag.oldChildNodes[i]); 
} 

Ou vous pourriez faire l'une de ces place, semblable à la façon dont vous passez les sections d'accordéon et hors:

  • Insérez les deux textes de liaison dans le code HTML, puis utilisez le code CSS display: none; pour désactiver celui que vous ne voulez pas.
  • Basculer entre les éléments a entiers en utilisant CSS display: none;.
+0

Salut idéalmachine, merci. J'ai essayé W3C DOM façon. J'ai une erreur, – QLiu

+0

cur = cur.nextSibling; alert (cur) // Valeur nulle – QLiu

+0

J'ai trouvé un moyen. Je change mon javascript comme ça

"function kmt_Toggle(obj, aTag) { \t \t var el = document.getElementById(obj); \t \t //Save original Store at the firs time. \t \t if(!aTag.originalInnerHTML) \t \t { \t \t aTag.originalInnerHTML=aTag.innerHTML; \t \t } \t \t \t \t if (el.style.display != 'none') { \t \t el.style.display = 'none'; \t \t aTag.innerHTML= aTag.originalInnerHTML; \t \t } \t \t else if(el.style.display =='none'){ \t \t el.style.display = ''; \t \t aTag.innerHTML='[close..]'; \t \t } \t }"
// D'abord je stocke une chaîne de caractères Tag dans une variable – QLiu

0

vous pouvez utiliser la

documentElement. getElementsByTagName("div") 

vous avez ne définissez après si vous voulez que le premier élément ou deuxième etc

comme si

documentElement. getElementsByTagName("div").item(0).innerHtml; 

vous donnera l'innehtml de la première occurrence de div

ou si vous avez une carte d'identité

documentElement. getElementsById('idname') 
2

Vous pouvez utiliser:

getElementsByTagName("tagName")[0].firstChild.nodeValue; 

ou:

getElementsById("id")[0].firstChild.nodeValue; 
0

Peut-être:

return document.getElementById(<your div name>).innerHtml; 
+0

Salut idealmachine, thankks. J'ai essayé W3C DOM façon. J'ai une erreur, cur est une valeur nulle. \t while (cur) { \t \t aTag.oldChildNodes.push (cur); \t \t cur = cur.nextSibling; \t \t alert (cur); \t \t} – QLiu

0

J'ai découvert un moyen. Je change mon javascript comme ça

function kmt_Toggle(obj, aTag) { 
     var el = document.getElementById(obj); 
     //Save original Store at the firs time. 
     if(!aTag.originalInnerHTML) 
     { 
      aTag.originalInnerHTML=aTag.innerHTML; 
     } 

     if (el.style.display != 'none') { 
      el.style.display = 'none'; 
      aTag.innerHTML= aTag.originalInnerHTML; 
     } 
     else if(el.style.display =='none'){ 
      el.style.display = ''; 
      aTag.innerHTML='[close..]'; 
     } 

     }" 

// D'abord, je stocke chaîne de texte ATAG dans une des variables

Questions connexes