-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 回答