0

2 つのメソッドがあります。1 つは内部メソッドで、もう 1 つはインスタンス メソッドです。内部関数( onkeydown="javascript:return checkChatBoxInputKey();") を呼び出すとうまく機能しますが、イベント ( ) を
アクティブにしようとすると、次のエラーが発生します。onclickonclick="this.CloseChatBox();

0x800a01b6 - Microsoft JScript ランタイム エラー: オブジェクトはプロパティまたはメソッド 'CloseChatBox' をサポートしていません

これが私のコードです:

function ChatBox(){
    // Methods
    this.CloseChatBox = ChatBox.CloseChatBox;

    // Adding new chat box to page
    $(" <div />").attr("id", "chatbox")
    .html('<div class="chatboxhead">' +                                                    
          '<a href="javascript:void(0)" title="Close chat box" onclick="this.CloseChatBox();">X</a>' + // This line fails to work
                    '</div>' +
                    '<div class="chatboxbody">' +
                            '<textarea onkeydown="javascript:return checkChatBoxInputKey();"></textarea>' +
                    '</div>')
    .appendTo($("body"));

    $("#chatbox_" + this.CallId).show();

    return true;}

function checkChatBoxInputKey(){
    alert("checkChatBoxInputKey");}

ChatBox.CloseChatBox = function (){
    alert("CloseChatBox");}

私に何ができる?

4

1 に答える 1

1

ではonclick、関数内this<a>タグ自体ではありませんChatBox

<a>タグにメソッドがないため、エラーが発生していますCloseChatBox

イベントバインディングに属性を使用しないことを強くお勧めします。実際のイベント ハンドラを使用します。タグにクラスを追加し、jQuery を使用してイベントをバインドします。<a>

HTML:

<a href="javascript:void(0)" title="Close chat box" class="closeChatBox">X</a>

JavaScript (ChatBox関数の外側、 内に配置$(document).ready):

$('a.closeChatBox').click(function(){
    ChatBox.CloseChatBox();
});
于 2013-01-14T14:46:10.237 に答える