Avatar billede anders_cp Nybegynder
05. august 2008 - 17:00 Der er 9 kommentarer og
1 løsning

lægge strenge sammen

Hej
Jeg vil lægge strenge sammen og bruge en samlet streng. Men det mislykkes.

Jeg giver den samlede kode for at kunne forklare bedre hvad jeg vil, men det drejer sig reelt kun to kodelinjer:
var rowcount = id.rows.length; // VIRKER IKKE
var rowcount = ctl00_ContentPlaceHolder1_DataGridXeroxOrders.rows.length; // VIRKER
Jeg kan ikke få lov til at bruge den samlede streng (id) og bruge videre til bl.a. at finde antallet af rækker (rows.length)
Hvordan kan det være og hvad kan jeg gøre ved problemet?


Min funktion
------------
Funktionen skal kunne disable/enable en samlet antal checkboxe og kunne kaldes alle steder fra med et ID, som skal erstatte strengen: 'DataGridXeroxOrders'

//checks all DataGrid CheckBoxes with the given name with the given value
function CheckAllDataGridCheckBoxes(checkVal, id) {
// id bliver læst ind som 'DataGridXeroxOrders'

var id = "ctl00_ContentPlaceHolder1_" +id;

var rowcount = id.rows.length; // VIRKER IKKE
var rowcount = ctl00_ContentPlaceHolder1_DataGridXeroxOrders.rows.length; // VIRKER


var rowcount = id.rows.length;

var i = 2;
var getElementByIDstring = "";
while (i <= rowcount)
{
    if (i < 10)
      getElementByIDstring = "ctl00_ContentPlaceHolder1_DataGridXeroxOrders_ctl0";
    else
        getElementByIDstring = "ctl00_ContentPlaceHolder1_DataGridXeroxOrders_ctl";
    getElementByIDstring = getElementByIDstring + i + "_ctl00";
    document.getElementById(getElementByIDstring).checked = checkVal;
      i++;
}

}


Sådan kalde javascriptet:
<input id="chkAllItems" type="checkbox" onclick="CheckAllDataGridCheckBoxes(document.forms[0].chkAllItems.checked, 'DataGridXeroxOrders');" />
Avatar billede w13 Novice
05. august 2008 - 18:34 #1
Jeg forstår ikke helt, hvad du mener.

id er jo lig med: "ctl00_ContentPlaceHolder1_" +id
Hvordan skal du så kunne hente noget, der hedder "rows" fra dét?
Avatar billede anders_cp Nybegynder
05. august 2008 - 19:37 #2
Det skal forståes sådan:

Ved at bruge den samlede streng, kan jeg nemt finde længden af rækkerne:

var SamletStreng = "ctl00_ContentPlaceHolder1_DataGridXeroxOrders";

Hvis jeg direkte skriver:
ctl00_ContentPlaceHolder1_DataGridXeroxOrders.rows.length;
... virker det.

men hvis jeg istedet bruger en streng-variabel, som denne:
SamletStreng.rows.length
virker det IKKE.

Håber jeg har gjort mig klar, ellers må du bede om mere info
Avatar billede olebole Juniormester
05. august 2008 - 20:24 #3
<ole>

Du roder tingene sammen. Variablen id er en streng, som ikke har en porperty, som hedder rows.

ctl00_ContentPlaceHolder1_DataGridXeroxOrders er et objekt, som har en property, som hedder rows.

Prøv i stedet:
    var id = window["ctl00_ContentPlaceHolder1_" + id];
    alert(id.rows.length);

/mvh
</bole>
Avatar billede olebole Juniormester
05. august 2008 - 20:26 #4
- og så ville jeg nok kalde objektet noget, der giver bedre mening end 'id'  ;o)
    var oHolder = window["ctl00_ContentPlaceHolder1_" + id];
    alert(oHolder.rows.length);
Avatar billede anders_cp Nybegynder
05. august 2008 - 22:04 #5
Fedt! det var lige det jeg skulle bruge.
Jeg kan forstå at window[] angiver at det er et objekt og ikke en string.

Og jo, jeg har fået ændret min variabelnavne ;)
<ole>læg et svar </bole>
Avatar billede w13 Novice
05. august 2008 - 22:27 #6
Om du skriver:

window.variablenavn

eller bare:

variablenavn

gør ingen forskel. Du skal bare forestille dig, at der under alle omstændigheder står window foran. (Da alle variabler er "børn" af window-objektet, så vidt jeg har forstået.)

At Olebole så bruger [] er bare en alternativ måde at skrive det på.

Så at skrive:

window.variablenavn

svarer altså til:

window["variablenavn"]

Forskellen er blot at sidste eksempel tillader os at konkatenere variablenavnet. :)
Avatar billede anders_cp Nybegynder
05. august 2008 - 22:34 #7
ok, tak, w13, giver mening. Jeg bli'r mere og mere vidende ;)
Avatar billede anders_cp Nybegynder
07. august 2008 - 16:43 #8
Olebole vil du ikke have point? Du har fotjent dem ;)
Avatar billede anders_cp Nybegynder
09. april 2011 - 18:44 #9
Olebole har ikke lagt et svar. Jeg tillader mig at lukke nu.
Avatar billede olebole Juniormester
09. april 2011 - 18:47 #10
Jeg har været væk fra E længe - og samler ikke længere points - så det er helt fint med mig  *o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester