2016-05-03 1 views
0

Ich habe folgende in HTML-Code:Wie analysiere ich strukturierte Textdaten (in der Nähe von JSON) in textarea, um die erforderlichen Attribute abzurufen?

</div></td><td align='center' rowspan=2><textarea rows='15' name='bibtext' id='bibtext' readonly cols='40'> 
@book{book:12, 
    title =  {title goes here}, 
    author = {author goes here}, 
    other but non-relevant 
}</textarea> 

Um den Inhalt id='bibtext' abrufen ich benutze:

document.getElementById("bibtext").InnerText 

Und ich bekomme:

@book{book:12, 
    title =  {title goes here}, 
    author = {author goes here}, 
    other but non-relevant 
} 

Aber wie bekomme ich das Inhalt von title (das ist title goes here)? Ich habe von document.querySelector gehört, aber ich weiß nicht, ob es hier anwendbar ist.

+0

Ich denke, Sie sollten Daten in das Textfeld nicht so füllen/rendern. – hmd

Antwort

0

Versuchen Sie, diese

var value = document.getElementById("bibtext").innerText; 
value = JSON.parse(value.substring(value.indexOf("{"))).title; 
0

Sie wahrscheinlich zwei Eingabetext für den Titel und den Autor und einen Textbereich für „andere aber nicht relevant“ verwendet werden soll. Es ist sinnlos, den Inhalt Ihres Textbereichs zu analysieren, um den Titel und den Autor zu erhalten, wenn Sie sie einfach in separate Eingaben setzen können.

+0

Es ist nicht mein HTML-Code und dein Kommentar ist keine Antwort. – menteith

+0

Nun, es ist nur ein Ratschlag, damit Sie es einfacher machen können. Ich versuche nur zu helfen, keine Notwendigkeit, unhöflich zu sein :). –

+0

Ich wollte nicht unhöflich sein. Wenn Sie in SO einen Kommentar oder Ratschlag haben, sollten Sie ihn als Kommentar zu der Frage und nicht als Antwort bereitstellen. Danke trotzdem. – menteith

0

document.querySelector funktioniert nur für DOM (geparsten HTML). In Ihrem Fall ist der Inhalt des Textfelds nur eine Zeichenfolge. Es ist nicht einmal JSON (obwohl es irgendwie ähnlich aussieht) - können so versuchen, es zu analysieren, mit regex:

var text = document.getElementById("bibtext").value; 
text.match(/title.*/)[0]; // "title =  {title goes here}," 

Sie können es drehen weiter mit Regex, wie Sie wünschen ... :)

InnerText funktioniert nicht für mich in Chrome, daher verwende ich value, um den Inhalt von Textarea zu bekommen.

0

Sie können dies versuchen.

var c=document.getElementById("bibtext").InnerText; 
var a=c.split(","); 
console.log(a[1].substring(a[1].indexOf("{")+1,a[1].length-1)); 
Verwandte Themen