webForumDet fria alternativet

innerHTML

JavaScript

9 svar · 955 visningar · startad av twenty

Medlem sedan jan. 20133 inlägg
Frågan#1

Jag är ny på det här med javascript och har försökt mig på innerHTML, men det går inte så bra hehe. Har läst lite på internet och än så länge så ser min kod ut såhär, men den fungerar inte. Var har jag gjort för fel?

<ul id="meny">
  <li><p class="title">Title 1</p>
    <ul>
      <li>
        <p id="subtitle1"></p>
      </li>
    </ul>
  </li>
</ul>
function titles()
{
  var nextElement = next(this);
  if(nextElement.style.display == "none")
  {
    nextElement.style.display = "block";
  }
  else
  {
    nextElement.style.display = "none"; 
  }
}

function init()
{

  var title = document.getElementsByTagName("p");
  for(var i = 0; i < title.length; i++)
  { 
    if(title[i].className == "title")
	{
	  title[i].onclick = titles;
	}  
  }
 
  var subtitle = document.getElementsByTagName("p");
  var show = document.getElementByClass('subtitle1');
  
  var subtitle1 = document.getElementsByTagName("p");
  for(var i = 0; i <subtitle1.length; i++)
  { 
    if(subtitle1[i].Id == "subtitle1")
	{
      show.innerHTML = "Detta är min text";	
	  subtitle1[i].parentNode.getElementsByTagName("p")[0].style.display = 'none';
	} 
  }
   
}
Medlem sedan juni 20019 519 inlägg
#2

när kör du init metoden? Vad är det som inte fungera?

document.getElementByClass('subtitle1');

du menar nog getElementById

Medlem sedan mars 2007845 inlägg
#3

Eller getElementsByClassName

Medlem sedan juni 20019 519 inlägg
#4

drew skrev:

Eller getElementsByClassName

Förutom att html koden är det ett ID och stödet för det är ju inte det mest optimala (ie9+)

Sen saknar man funktionen next vad gör den?

Medlem sedan dec. 201027 inlägg
#5

Har du kollat något på jquery? Mycket snyggare och enklare imo.

Medlem sedan mars 2007845 inlägg
#6

voigtann1 skrev:

Förutom att html koden är det ett ID och stödet för det är ju inte det mest optimala (ie9+)

Ok, sorry missade den detaljen.

Medlem sedan jan. 20133 inlägg
#7

voigtann1 skrev:

Förutom att html koden är det ett ID och stödet för det är ju inte det mest optimala (ie9+)

Sen saknar man funktionen next vad gör den?

Oj haha, Id ska det såklart vara! Men det fungerar inte ändå.
När jag klickar på "Titel 1" så visas min underrubrik, men min text show.innerHTML = "Detta är min text"; syns inte. Har jag skrivit koden fel eller kanske lagt koden på fel ställe?

Kanske lättare att se vad som är fel om jag skriver hela min kod!

function titles() 
{ 
  var nextElement = next(this); 
  if(nextElement.style.display == "none") 
  { 
    nextElement.style.display = "block"; 
  } 
  else 
  { 
    nextElement.style.display = "none";  
  } 
} 

function init() 
{ 

  var title = document.getElementsByTagName("p"); 
  for(var i = 0; i < title.length; i++) 
  {  
    if(title[i].className == "title") 
    { 
      title[i].onclick = titles; 
    }   
  } 
  
  var subtitle = document.getElementsByTagName("p"); 
  var show = document.getElementById('subtitle1'); 
   
  var subtitle1 = document.getElementsByTagName("p"); 
  for(var i = 0; i <subtitle1.length; i++) 
  {  
    if(subtitle1[i].Id == "subtitle1") 
    { 
      show.innerHTML = "Detta är min text";     
      subtitle1[i].parentNode.getElementsByTagName("p")[0].style.display = 'none'; 
    }  
  } 
    
}  

window.onload = init;

function next(elem) 
{
    do 
    {
        elem = elem.nextSibling;
    } 
    while (elem && elem.nodeType != 1);
    return elem;               
}
Medlem sedan jan. 20133 inlägg
#8

plekanec skrev:

Har du kollat något på jquery? Mycket snyggare och enklare imo.

Ja det har jag, men lyckades inte få det till att fungera som jag ville. :l

Medlem sedan juni 20019 519 inlägg
#9

din Kod säger att nextsibling dvs det bli din ul lista som skall visas och döljas, men du säger i din andra kod att det är paragraf (#subtitle1) är den som skall döljas.

jQuery är betydligt enklare om du är mer van med CSS

Ja det har jag, men lyckades inte få det till att fungera som jag ville.

Och ren Javascript har fungerat bättre? ;)

Medlem sedan juni 20019 519 inlägg
#10

twenty skrev:

Oj haha, Id ska det såklart vara! Men det fungerar inte ändå.
När jag klickar på "Titel 1" så visas min underrubrik, men min text show.innerHTML = "Detta är min text"; syns inte. Har jag skrivit koden fel eller kanske lagt koden på fel ställe?

det gör den men du säger också att p elementet skall döljas, det du vill göra är något i stil med: http://jsfiddle.net/4vjP4/1/ gissar jag (och jQuery version: http://jsfiddle.net/4vjP4/2/ )

134 ms totalt · 2 externa anrop · v20260731065814-full.2ae45ccc
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)