| | # 1 |
| Registriert seit: 22.11.2008
Beiträge: 40
| Hi, jaa, ich weiß - dieses Thema wird es wohl schon zig Mal (nicht nur) hier gegeben haben. Aber ich finde mein Phänomen nirgendwo wieder - meistens geht es ja darum, dass vergessen wurde, dass getElementsByName() ein Array erzeugt. Das ist allerdings nicht mein Problem. Ich habe die HTML-Seite (im Original aus mehreren Stücken zusammengesetzt und aus Templatevorlage generiert) Schülersache CMS und das Skript http://thorr.bplaced.net/forendaten/script.js. Das Problem ist nun, dass das Skript document.getElementsByName('objtype')[0] als undefined ansieht (Zeile 35), obwohl zuvor alle Aufrufe dieser Art funktioniert haben. Nur dieses eine Element macht anscheinend Ärger, denn für mich ist eindeutig, dass es im HTML-Dokument in Zeile 54 vorliegt. Andererseits habe ich versucht, an gleicher Stelle pageform zu erreichen, was ebenfalls nicht möglich war. Ich hoffe, ihr könnt mir helfen, die Augen zu öffnen, da ich einfach mit meine Latein am Ende bin. LG PS: Für die, die den Fehler eventuell schon am Code erkennen können/wollen, hier der Quelltext: HTML-Code: <?xml version="1.0" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" /> <meta name="author" content="Torben Fritsche" /> <title>Schülersache CMS</title> <link href="design/style.css" rel="stylesheet" type="text/css" /> <script type="text/javascript" src="language.js"></script> <script type="text/javascript" src="script.js"></script> </head> <body onload="reserveObj();"> <div class="overall"> <div class="header"> <div class="user-box"> Eingeloggt als: <span class="text-username">Administrator</span> <img src="design/arrow_nav.gif" alt="»" /> <a href="?sel=logout">Ausloggen</a> </div> </div> <div class="navigation"> <h2>Navigation</h2> <ul class="navigation-list"> <li><a href="?sel=home">Startseite</a></li> <li><a href="?sel=pages">Seiten</a></li> <li><a href="?sel=categories_overview">Kategorien</a></li> <li><a href="?sel=mails_overview">Massen-E-Mails</a></li> </ul> </div> <div class="content"> <h2>{HEADLINE}</h2> <noscript><p class="error-msg" style="display: block;">Ihr Browser unterstützt die Ausführung von JavaScript nicht oder sie ist momentan deaktiviert. Zur Bearbeitung von Inhalten ist aktiviertes JavaScript jedoch erforderlich.</p></noscript> <p class="error-msg" id="error-msg">{ERR_MSG}</p> <form action="?sel=alter_page&id=52" method="post" enctype="multipart/form-data" id="pageform"> <div id="msgbox"></div> <input type="hidden" value="page" name="objtype" /> <input type="hidden" value="52" name="id" /> <table class="page-form-table"> <tr> <td class="description">Titel</td> <td colspan="2"><input type="text" value="Testseiten" maxlength="255" id="formfield-title" name="title" disabled="disabled" onchange="createpage();" /></td> </tr><tr id="trow-pcontent"> <td class="description">Inhalt</td> <td><textarea id="formfield-content" name="content" rows="10" disabled="disabled">Bla.</textarea></td> <td class="settings-column"> <input type="checkbox" value="public" name="public" id="formfield-public1" disabled="disabled" /> <label for="formfield-public1" class="disabled" id="label-public">Veröffentlicht</label><br /> <select size="1" name="suppage" disabled="disabled"> <option value="0" class="italic" style="border-left: 0px solid #eeeeee;"><i>(Erste Ebene)</i></option> <option value="48" style="border-left: px solid transparent; font-weight: normal;">Startseite</option> <option value="50" style="border-left: px solid transparent; font-weight: bold;">Testseiten</option> <option value="1" style="border-left: 14px solid transparent; font-weight: normal;">Testseite Nr.10</option> <option value="2" style="border-left: 14px solid transparent; font-weight: normal;">Testseite Nr.1</option> <option value="3" style="border-left: 14px solid transparent; font-weight: normal;">Testseite Nr.10</option> <option value="4" style="border-left: 14px solid transparent; font-weight: normal;">Testseite Nr.10</option> <option value="5" style="border-left: 14px solid transparent; font-weight: normal;">Testseite Nr.10</option> <option value="6" style="border-left: 14px solid transparent; font-weight: normal;">Testseite Nr.10</option> <option value="7" style="border-left: 14px solid transparent; font-weight: normal;">Testseite Nr.10</option> <option value="8" style="border-left: 14px solid transparent; font-weight: normal;">Testseite Nr.10</option> <option value="9" style="border-left: 14px solid transparent; font-weight: normal;">Testseite mit Umlauten</option> <option value="10" style="border-left: 14px solid transparent; font-weight: normal;">Testseite Nr.10</option> <option value="11" style="border-left: 14px solid transparent; font-weight: normal;">Testseite Nr.10</option> <option value="12" style="border-left: 14px solid transparent; font-weight: normal;">Testseite Nr.10</option> <option value="13" style="border-left: 14px solid transparent; font-weight: normal;">Neuer Titel</option> <option value="14" style="border-left: 14px solid transparent; font-weight: normal;">Testseite des Erstellens</option> <option value="16" style="border-left: 14px solid transparent; font-weight: normal;">Artikelseite</option> <option value="17" style="border-left: 14px solid transparent; font-weight: normal;">Testseite für Artikel</option> <option value="24" style="border-left: 14px solid transparent; font-weight: normal;">test</option> <option value="25" style="border-left: 14px solid transparent; font-weight: normal;">test2</option> <option value="26" style="border-left: 14px solid transparent; font-weight: normal;">Test3</option> <option value="27" style="border-left: 14px solid transparent; font-weight: normal;">Test3</option> <option value="28" style="border-left: 14px solid transparent; font-weight: bold;">Test4</option> <option value="33" style="border-left: 28px solid transparent; font-weight: normal;">TEst</option> <option value="29" style="border-left: 14px solid transparent; font-weight: normal;">Test</option> <option value="30" style="border-left: 14px solid transparent; font-weight: normal;">Test</option> <option value="31" style="border-left: 14px solid transparent; font-weight: normal;">Test</option> <option value="32" style="border-left: 14px solid transparent; font-weight: normal;">Test</option> <option value="34" style="border-left: 14px solid transparent; font-weight: normal;">Test5</option> <option value="35" style="border-left: 14px solid transparent; font-weight: normal;">Test</option> <option value="37" style="border-left: 14px solid transparent; font-weight: normal;">Test123</option> <option value="38" style="border-left: 14px solid transparent; font-weight: normal;">Test1234</option> <option value="39" style="border-left: 14px solid transparent; font-weight: normal;">Test12345</option> <option value="40" style="border-left: 14px solid transparent; font-weight: normal;">Test123456</option> <option value="41" style="border-left: 14px solid transparent; font-weight: normal;">Notizen</option> <option value="42" style="border-left: 14px solid transparent; font-weight: normal;">Test Test Test</option> <option value="43" style="border-left: 14px solid transparent; font-weight: normal;">Test Test Test Test</option> <option value="44" style="border-left: 14px solid transparent; font-weight: normal;">Test Test Test Test Test</option> <option value="45" style="border-left: 14px solid transparent; font-weight: normal;">Test Test Test Test Test Test</option> <option value="46" style="border-left: 14px solid transparent; font-weight: normal;">Test für das Speichern von Seiten ohne direktes AJAX</option> <option value="47" style="border-left: 14px solid transparent; font-weight: bold;">Nochmal der Test - Test zur Titeländerung</option> <option value="36" style="border-left: 28px solid transparent; font-weight: normal;">test5</option> <option value="49" style="border-left: 14px solid transparent; font-weight: normal;">Test Test 1234567</option> <option value="51" style="border-left: px solid transparent; font-weight: normal;">Testseiten</option> <option value="52" style="border-left: px solid transparent; font-weight: normal;">Testseiten</option> </select> </td> </tr><!--<tr id="trow-particles"> <td class="description">Artikelkategorie</td> <td colspan="2"> Artikelkategorie:<br /> <select size="1" name="category" disabled="disabled"> <!-- BEGIN select-cat-option<option value="{select-cat-option.ID}"<!-- IF select-cat-option.IS_P_A_CAT selected="selected"<!-- ENDIF{select-cat-option.NAME}</option> <!-- END select-cat-option > </select><br /><br /> Artikel pro Seite:<br /> <input type="text" value="{P_A_NUMPERPAGE}" size="2" maxlength="2" name="articlesperpage" disabled="disabled" /> </td> </tr>--><tr> <td colspan="3"><input type="submit" value="Speichern" name="submit" disabled="disabled" /></td> </tr> </table> </form> <p id="box"></p></div> <div class="clear"></div> <div class="footer"> (Fußzeile) </div> </div> </body> </html> Code: function ajaxRequest(url, options)
{
this.url = url;
this.method = (options.method) ? options.method : 'GET';
this.query = (options.query) ? options.query : null;
this.func = (options.onComplete) ? options.onComplete : null;
this.req = (window.XMLHttpRequest)
? new XMLHttpRequest()
: ((window.ActiveXObject)
? new ActiveXObject('Microsoft.XMLHTTP')
: false);
}
ajaxRequest.prototype.dorequest = function() {
this.req.open(this.method, this.url, true);
if (this.method == 'POST')
{
this.req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
}
var this_obj = this;
var func = this.func;
this.req.onreadystatechange = function() {
if (this_obj.req.readyState == 4 && this_obj.func != null)
{
this_obj.func(this_obj.req.responseText, this_obj.req.responseXML);
}
}
this.req.send(this.query);
}
//var http = new ajax_request('handle.php?do=createpage')
//var formfields = new Array(title, getElementsByName('public')[0], content, submit);
var objtype = document.getElementsByName('objtype')[0].objtype.value;
document.write(objtype);
function toggleForm(mode) {
var value = (mode) ? 'disabled' : '';
document.getElementById(objtype + 'form').title.disabled = value;
document.getElementsByName('public')[0].disabled = value;
document.getElementById(objtype + 'form').suppage.disabled = value;
document.getElementById(objtype + 'form').content.disabled = value;
document.getElementById(objtype + 'form').submit.disabled = value;
document.getElementById('label-public').setAttribute('class', value);
}
function reserveObj(takeobj)
{
var id = document.getElementById(objtype + 'form').id.value;
if (id)
{
var url = 'handle.php?do=reserve' + objtype + ((takeobj) ? '&options=take' + objtype : '') + '&id=' + id;
var http = new ajaxRequest(url, {
method:'GET',
onComplete:reserveObj_handle});
http.dorequest();
}
else
{
toggleform(false);
document.getElementById('error-msg').style.display = 'none';
document.getElementById('error-msg').innerHTML = '';
}
}
function reserveobj_handle(text, xml) {
var status_information = text.split(',');
if (status_information[0] == '1')
{
toggleForm(false);
document.getElementById('error-msg').style.display = 'none';
document.getElementById('error-msg').innerHTML = '';
window.setTimeout('reserveObj()', 3000);
}
else
{
document.getElementById('error-msg').style.display = 'block';
toggleForm(true);
document.getElementById('error-msg').innerHTML = (status_information[1] == 1)
? lang['msg_reserved'][0] + status_information[2] + lang['msg_reserved'][1]
+ ((status_information[3] == '1') ?
lang['msg_takepage']
: '')
: (status_information[1] == 2)
? lang['msg_nopermissions'] + 'nopermissions'
: (status_information[1] == 3)
? lang['msg_error']
: lang['msg_error'];
if (status_information[1] == 1 || status_information[3] == 1)
{
window.setInterval('checkavAilability()', 3000);
}
}
}
function keepreservation() {
}
function createObj() {
var id = document.getElementById(objtype + 'form').id.value;
var title = document.getElementById(objtype + 'form').title.value;
//document.getElementById('error-msg').innerHTML = 'test123';
if (title.length > 3)
{
if (!id)
{
var http = new ajaxRequest('handle.php?do=create' + objtype + '&title=' + title, {
method:'GET',
query:'do=create' + objtype,
onComplete:createObj_handle
});
http.dorequest();
}
else
{
var http = new ajaxRequest('handle.php?do=update' + objtype + '&id=' + id + '&title=' + title, {
method:'GET',
query:'do=update' + objtype
});
http.dorequest();
}
}
}
function createObj_handle(text, xml) {
if (text)
{
document.getElementById(objtype + 'form').id.value = text;
reservepage();
}
else
{
document.getElementById('error-msg').innerHTML = lang['msg_createp_error'];
}
}
function checkavAilability() {
var id = document.getElementById(objtype + 'form').id.value;
var http = new ajax_request('handle.php?do=getstatus&id=' + id, {
method:'GET',
query:'do=getstatus',
onComplete:checkAvailability_handle
});
http.dorequest();
}
function checkavAilability_handle(text, xml) {
if (text == '1')
{
document.getElementById('error-msg').innerHTML = lang['msg_isreadonly'];
window.clearInterval();
}
} |
|
| | # 2 |
| Moderator Registriert seit: 31.10.2002 Ort: Oldenburg
Beiträge: 5.432
| Ähm, warum versuchst Du document.getElementsByName('objtype')[0].objtype.value zu lesen? Mal davon ab, dass es sicherer wäre, beide getElementsByName()[] auf getElementById() umzubauen, auch Checkbox hast Du ja nur eine, getElementsByName()[] macht eher Sinn bei einer Menge von Checkboxen/Radiobuttons gleichen Namens. Grüße, Thorsten
__________________ Wieder da: FreewareGuide.de ...bin letztens durch die Aufnahmeprüfung zur Hellseherschule gekracht! ![]() |
|





