2016-05-23 8 views
1

Ich versuche einen html Brief zu erstellen. Jeder Buchstabe kann Bedingungen enthalten oder nicht. Diese Bedingungen sind in einem gespeichert.Wie kann JavaScript zum Testen eines HTML-Divs für Inhalte aus einer externen Datenbank verwendet werden?

Was passiert, wenn ein html div enthaltenen Datenbankfeld wie: -

<div id="Conditions"> 
    <p>dbfield(var)</p> 
</div> 

Was ich tun muß, ist die resultierenden Daten testen und nicht die tatsächlichen div selbst. Siehe mein letzter Versuch: -

<div id="Conditions"> 
    <p>dbfield(conditions)</p> 
</div> 

<div id="NoConditions"> 
    <p>No specific conditions apply</p> 
</div> 

<script type="text/javascript" language="javascript"> 
<!-- 
    if (document.getElementById("Conditions").innerHTML.length == 0){ 
     document.getElementById("Conditions").style.display = "none"; 
     document.getElementById("NoConditions").style.display = "inline"; 
    } 
    else { 
     document.getElementById("NoConditions").style.display = "inline"; 
     document.getElementById("Conditions").style.display = "none"; 
    } 
//--> 
</script> 

Auf den Punkt gebracht, mein Dilemma, das ich testen wollen, ob ein Ergebnis aus der Datenbank zurückgegeben wird oder nicht.

Ich weiß, das ist eine seltsame, aber das ist ein third party db, dass ich nur Lesezugriff auf innerhalb einer web based interface, die die html Form Buchstaben erstellt. Allerdings hat das vorgefertigte System sehr eingeschränkte Funktionalität (kann nicht verwendet werden, wenn's oder dann ist), daher verwende ich javascript, um diese Einschränkungen zu umgehen.

Ich nehme an, es etwas knifflig mit der Art der Daten, die in den div tut, wie ich NULL-Tests versucht habe "" Tests, innerHTML Tests, eine i++ counter, children Prüfungen, mit haschildnode() Tests. Bisher hat es all meinen Verhören widerstanden.

Jede Hilfe wäre willkommen. Danke

+0

, wie es innen 'Conditions' sieht, wenn Sie Element inspizieren? – cuniculus

Antwort

0

Die Bedingungen, die Sie in Ihr Skript eingegeben haben, sind falsch. Sie haben die NoConditions div als Inline in den Abschnitten if und else angezeigt. Zweitens wird die lengthinnerHTMLConditions div immer größer als 0 sein, da es immer ein darin hat. So erhalten Sie stattdessen die innerHTML des Tags . Unten ist das Snippet für dasselbe. Ich hoffe, dies löst Ihre Anfrage.

var pText = document.getElementById("Conditions").getElementsByTagName('p')[0].innerHTML; 
 
if (pText.length == 0){ 
 
     document.getElementById("Conditions").style.display = "none"; 
 
     document.getElementById("NoConditions").style.display = "inline"; 
 
    } 
 
    else { 
 
     document.getElementById("Conditions").style.display = "inline"; 
 
     document.getElementById("NoConditions").style.display = "none"; 
 
    }
<div id="Conditions"> 
 
    <p>Conditions</p> 
 
</div> 
 

 
<div id="NoConditions"> 
 
    <p>No specific conditions apply</p> 
 
</div>

+0

Danke für die super schnelle Antwort. Funktioniert jetzt perfekt. Die style.display "inline" und "none" Problem war mein Fehler nach dem Bearbeiten des Skripts zu oft, während tatsächlich versucht, meine wahre Arbeit zu tun: -P –

+0

Froh, es hat funktioniert! :) –

Verwandte Themen