2009-04-25 7 views
17

Ich bin eine Benutzereingabe an einen der Veranstaltungen zu schaffen:hinzufügen OnClick-Eigenschaft auf der Eingabe mit JavaScript

var throwConnectBox = function() { 
    chat_box = document.getElementById('box'); 
    div = window.parent.document.createElement('div'); 
    input = window.parent.document.createElement('input'); 
    input.type = "submit"; 
    input.value = "Join chat"; 
    input.onclick = "conn.send('$connect\r\n');"; 
    div.appendChild(input); 
    chat_box.appendChild(div); 
} 

... aber der resultierende Eingang Onclick Eigenschaft nicht hat. Ich habe versucht,

input.onclick = conn.send('$connect\r\n'); 

... stattdessen zu verwenden, aber didn 'arbeiten auch nicht. Was mache ich falsch?

+1

Haben Sie schon alle diese Variablen deklariert? Wenn nicht, verwenden Sie "implified globals", was nicht sehr gut ist - machen Sie sie zu lokalen Variablen, indem Sie sie mit dem Schlüsselwort "var" deklarieren. –

Antwort

30

Versuchen Sie folgendes:

input.onclick = function() { conn.send('$connect\r\n'); }; 

Steve

+0

Versucht es, aber die Eingabe hat nicht die Onclick-Eigenschaft erhalten. Was könnte dort vor sich gehen? – Alex

+0

Wie bestimmen Sie, ob die Eingabe die "onclick" -Funktion hat oder nicht? –

+0

Ich gehe zu FireBug und suche im Abschnitt "HTML" nach. – Alex

2

Ich glaube, Sie können die \ r \ n entfliehen möchten, wenn Sie beabsichtigen, diese zu passieren ...

conn.send('$connect\\r\\n') 

I don Sehen Sie, was Ihr onclick Handler zu erreichen versucht ...

+0

Ah, kein Problem damit, es funktioniert gut (es sendet eine Leitung über einen TCP-Socket). Ich bin tatsächlich fest mit dem Anhängen der onclick-Eigenschaft an das Eingabe-Tag. – Alex

6

Es gibt ein Problem mit einer Ihrer Linien hier; Ich habe es für Sie korrigiert:

var throwConnectBox = function() { 
    chat_box = document.getElementById('box'); 
    div = window.parent.document.createElement('div'); 
    input = window.parent.document.createElement('input'); 
    input.type = "submit"; 
    input.value = "Join chat"; 
    /* this line is incorrect, surely you don't want to create a string? */ 
    // input.onclick = "conn.send('$connect\r\n');";? 
    input.onclick = function() { 
     conn.send('$connect\r\n'); 
    }; 
    div.appendChild(input); 
    chat_box.appendChild(div); 
} 

Macht das mehr Sinn?

+0

Das war es, danke. – Alex

1

Dies ist einer der Gründe, warum ich beschlossen habe jQuery zu verwenden:

$('<input type="submit" value="Join chat" />') 
     .click(function() { conn.send('$connect\r\n'); }) 
     .appendTo('<div></div>') 
     .appendTo('#box');