webForumDet fria alternativet

dynamisk getElementById

6 svar · 611 visningar · startad av Thompa__85

Thompa__85Medlem sedan aug. 2002601 inlägg
#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?

The_HulkMedlem sedan juni 20031 937 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?

nitro2k01Medlem sedan aug. 20037 630 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;
  }
Thompa__85Medlem sedan aug. 2002601 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?

metalboyMedlem sedan jan. 2005870 inlägg
#5

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

nitro2k01Medlem sedan aug. 20037 630 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);
}
Thompa__85Medlem sedan aug. 2002601 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 ;)

Genererad på 387 ms · cache AV · v20260730165559-full.f96bc7eb