Jump to content
php.lv forumi

id un tagi


Aleksandrs

Recommended Posts

Ir nepieciešams ar vienu klikšķi atvērt, attēlot vairākus tagus.

 

Problēma ir tajā, ka ID visiem tagiem ir vienāds.

To, ka JS atver tikai vienu tagu, standarti neatļauj savādāk,

ir gan iespēja šķirot veramos laukus piem.: A1, A2

 

A - Attiecīgi ir vērtība norādītā pie klikšķināmās pogas.

 

 

Kādi būtu varianti ar Javascript apiet šo problēmu?

Link to comment
Share on other sites

Problēma ir tajā, ka ID visiem tagiem ir vienāds.
ID NEDRĪKST BŪT VIENĀDS! Tu saproti, kas ir "unikāls"?

 

Nesapratu ko nozīmē

Ir nepieciešams ar vienu klikšķi atvērt, attēlot vairākus tagus.

 

varbūt LOGUS?

ķip. window.open('adrese','identifikators')?

 

ja 'identifikators' iekš window.open vienāds, tad jā - atver tikai vienu logu. var lietot kaut ko līdzīgu

window.open('adrese',Math.floor(Math.rand()*10000000))

Link to comment
Share on other sites

Venom, paldies, tagad zināšu ID nozīmi.

Bet NAME, tie arī ir unikāli?

 

Piemēram:

<a href="#" onclick="Show('A')">Atvērt visus A vārdus</a>
<a href="#" onclick="Show('B')">Atvērt visus B vārdus</a>
...

<div id="A1" style="display:none;">Aleksandrs</div>
<div id="A2" style="display:none;">Andris</div>
<div id="B1" style="display:none;">Boss</div>
...

 

Ja, ID nevarbūt vienādi, tad vai pie norādītā Show A, kā var atvērt visus tagus, kuriem ID sakas ar A?

 

Vai ir arī citi varianti, ko var saveidot ar JavaSciprt šajā gadijumā?

Link to comment
Share on other sites

nē, name var sakrist, bet tikai radio elementiem, citādi pēdējais elements ar name=x aizvietos pirmo ar x tajā pašā formā. resp. jā, var sakrist dažādās formās, bet tajā pašā formā ar savu specifiku. + atsevišķa runa, ja name ir pašindeksējošs masīvs (name="mainīgais[]")

 

Att. uz tavu piemēru, es taisītu ko līdzīgu:

 

<script>

actdiv=null;

function show(elt)

{

if (!elt.id)

return true;

if (actdiv!=null)

actdiv.style['display']='none';

actdiv=document.getElementById(elt.id+'div');

actdiv.style['display']='block';

return false;

}

</script>

<style>

.nd {display:none}

a {cursor:hand}

</style>

<a id="A" onclick="show(this);">A</a>

<a id="B" onclick="show(this);">B</a>

 

<div id="Adiv" class="nd">

Aleksandrs, Anna ...

</div>

 

<div id="Bdiv" class="nd">

Baiba, Boriss ...

</div>

Link to comment
Share on other sites

Bet vai tomēr nevar, kaut kā saveidot, ka ar JavaScript var atvērt vairārākus tagus ar līdzīgus?

 

Jo tavā piemērā ir jāpārkārto visi vārdi, kas nav JavaScript darbināmais, bet php, savukārt, katru reizi šķirot tos vārdus, pa burtiem varētu būt lieka minimālā slodze serverim.

Link to comment
Share on other sites

Variants 1:

<script>
  function Show(arr) {
    for (i=0; i<arr.length; i++) {
      if (el = document.getElementById(arr[i])) {
        el.style.display = "block";
      }
    }
  }
</script>
<a href="#" onclick="Show(['A1','A2'])">Atvērt visus A vārdus</a>
<a href="#" onclick="Show(['B1'])">Atvērt visus B vārdus</a>
...

<div id="A1" style="display:none;">Aleksandrs</div>
<div id="A2" style="display:none;">Andris</div>
<div id="B1" style="display:none;">Boss</div>

Variants 2:

<script>
  function Show(name) {
    el = document.getElementsByName(name);
    for (i=0; i<el.length; i++) {
      el.item(i).style.display = "block";
    }
  }
</script>
<a href="#" onclick="Show('A')">Atvērt visus A vārdus</a>
<a href="#" onclick="Show('B')">Atvērt visus B vārdus</a>
...

<div name="A" style="display:none;">Aleksandrs</div>
<div name="A" style="display:none;">Andris</div>
<div name="B" style="display:none;">Boss</div>
...

Vislēnākais variants 3:

<script>
  function Show(id) {'
    if (!(magic = document.getElementById("magic"))) return;
    el = magic.getElementsByTagName("DIV");
    for (i=0; i<el.length; i++) {
      e = el.item(i);
      if (e.id.charAt(0) == id) e.style.display = "block";
    }
  }
</script>
<a href="#" onclick="Show('A')">Atvērt visus A vārdus</a>
<a href="#" onclick="Show('B')">Atvērt visus B vārdus</a>
...

<div id="magic">
<div id="A1" style="display:none;">Aleksandrs</div>
<div id="A2" style="display:none;">Andris</div>
<div id="B1" style="display:none;">Boss</div>
...
</div>

Edited by bubu
Link to comment
Share on other sites

vēl viens variants - "pingošana", ja zināms, ka visi 'A' elementi tiks saukti kā A1, A2, A3 utt.,

 

function show(startWith)
{
tmp=0;
while(document.getElementById(startWith + ++tmp))
 document.getElementById(startWith+tmp).style['display']='block';
}

 

izsaucāms ar show('A') utt.

Link to comment
Share on other sites

×
×
  • Create New...