webForumDet fria alternativet

dynamisk getElementById

JavaScript

6 svar · 613 visningar · startad av Thompa__85

Medlem sedan aug. 2002600 inlägg
Frågan#1

Hej!

Jag har en funktion:

function showHint(str)
{
if (str.length==0)
  {
  document.getElementById("värde").innerHTML="";
  return;
  }

Jag vill få in värdet från str till document.getElementById() och jag har testat med getElementById(str) men det verkar inte fungera.

Hur gör jag?

Medlem sedan juni 20031 837 inlägg
#2

Kan du visa koden för html-taggen som du vill ändra värdet på.
har du satt id='värde' på den taggen?

<div id='värde'></div>

innehåller str id på html-taggen eller text som ska visas?

Medlem sedan aug. 20039 340 inlägg
#3

Så här?

function showHint(str)
{
if (str.length==0)
  {
    // Tom sträng, använd standard-värde
    document.getElementById("värde").innerHTML="";
    return;
  }
  else
  {
    // Använd strängen
    document.getElementById(str).innerHTML="";
    return;
  }
Medlem sedan aug. 2002600 inlägg
#4

Upptäckte att det har fungerat. Det är ett annat problem som skapar felet:
Min kod:

function showHint(str)
{
var id = str;

if (str.length==0)
  {
  document.getElementById(id).innerHTML="";
  return;
  }
xmlhttp=GetXmlHttpObject();
if (xmlhttp==null)
  {
  alert ("Your browser does not support XMLHTTP!");
  return;
  }
var url="/inc/show.asp?q="+str;
xmlhttp.onreadystatechange=stateChanged;
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
}

function stateChanged()
{
if (xmlhttp.readyState==4)
  {
  document.getElementById(id).innerHTML=xmlhttp.responseText;
  }
}

I första funktionen fungerar det, men jag får inte med 'id' till den andra funktionen, dvs stateChanged. Hur får jag ner värdet?

Medlem sedan jan. 2005953 inlägg
#5

Du får göra id till en global variabel

Medlem sedan aug. 20039 340 inlägg
#6

Eller så kan man definiera funktionen inline, som nedan.

Dock stör jag mig fortfarande på att du först kollar om strängen är tom och sedan anropar document.getElementById med den strängen. Då anropar du ju document.getElementById("") som alltid lär returnera null!

function showHint(str)
{
var id = str;

if (str.length==0)
  {
  document.getElementById(id).innerHTML="";
  return;
  }
xmlhttp=GetXmlHttpObject();
if (xmlhttp==null)
  {
  alert ("Your browser does not support XMLHTTP!");
  return;
  }
var url="/inc/show.asp?q="+str;
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4)
    {
    document.getElementById(id).innerHTML=xmlhttp.responseText;
    }
  };
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
}
Medlem sedan aug. 2002600 inlägg
#7

nitro2k01 skrev:

Eller så kan man definiera funktionen inline, som nedan.

Dock stör jag mig fortfarande på att du först kollar om strängen är tom och sedan anropar document.getElementById med den strängen. Då anropar du ju document.getElementById("") som alltid lär returnera null!

function showHint(str)
{
var id = str;

if (str.length==0)
  {
  document.getElementById(id).innerHTML="";
  return;
  }
xmlhttp=GetXmlHttpObject();
if (xmlhttp==null)
  {
  alert ("Your browser does not support XMLHTTP!");
  return;
  }
var url="/inc/show.asp?q="+str;
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4)
    {
    document.getElementById(id).innerHTML=xmlhttp.responseText;
    }
  };
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
}

Tack det fungerade! Ska ta bort den onödiga kollen ;)

375 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
118 ms — deklarationer (db)
128 ms — hämta statistik (db)
128 ms — hämta tråd, inlägg och bilagor (db)
118 ms — ändringar (db)