Jump to content
php.lv forumi

Recommended Posts

Posted

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?

Posted
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))

Posted

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ā?

Posted

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>

Posted

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.

Posted (edited)

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
Posted

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.

×
×
  • Create New...