-3

ここでは、アンカー タグの javascript 関数 onclick を呼び出そうとしています。関数onclickを呼び出しているとき、何も起こっていません..

JavaScript関数にもアラートがありますが、アラートも発生していません。

ここに私のコードがあります:

document.writeln('<td><img class="rteImage" src="' + imagesPath + 'code.gif" width="25" height="24" alt="Code" title="Code" onClick="applyTag(document.getElementById("rte1"),"code")"></td>');

JavaScript 関数:

function applyTag(obj, tag)
{
    wrapText(obj, '<'+tag+'>', '</'+tag+'>');
    alert("hello 1");
};

function wrapText(obj, beginTag, endTag)
{
alert("hello 2");
    if(typeof obj.selectionStart == 'number')
    {
        var start = obj.selectionStart;
        var end   = obj.selectionEnd;   
        obj.value = obj.value.substring(0, start) + beginTag + obj.value.substring(start, end) + endTag + obj.value.substring(end, obj.value.length);
    }
    else if(document.selection)
    {
        obj.focus();
        var range = document.selection.createRange();
        if(range.parentElement() != obj) return false;
        if(typeof range.text == 'string')
        document.selection.createRange().text = beginTag + range.text + endTag;
    }
    else
    obj.value += text;
};

どうすればこれを解決できますか?

4

2 に答える 2

3

引用符のネストに問題があるようです:

document.write('... onClick="applyTag(document.getElementById("rte1"),"code")"> ...')

これを修正する最も簡単な方法は、おそらく'代わりに使用してエスケープすることです (document.write への単一引用符で囲まれた文字列でこれを生成しているため):

document.write('... onClick="applyTag(document.getElementById(\'rte1\'),\'code\')"> ...')
于 2013-10-21T06:40:48.213 に答える
1

二重引用符をエスケープしないと、最初の二重引用符が検出されるとすぐに、onclick ステートメントが終了し、javascript エラーが発生します。

だからこれの代わりに

document.writeln('<td><img class="rteImage" src="' + imagesPath + 'code.gif" width="25" height="24" alt="Code" title="Code" onClick="applyTag(document.getElementById("rte1"),"code")"></td>');

あなたが使用する必要があります

document.writeln('<td><img class="rteImage" src="' + imagesPath + 'code.gif" width="25" height="24" alt="Code" title="Code" onClick="applyTag(document.getElementById(\'rte1\'),\'code\')"></td>');
于 2013-10-21T06:50:34.360 に答える