如何调用javascript函数

如何调用javascript函数,javascript,jquery,html,Javascript,Jquery,Html,这里我试图调用javascript函数onclick of anchor标记。当我调用onclick函数时,什么都没有发生 我的javascript函数中甚至有警报,即使警报也没有发生 这是我的密码: document.writeln('<td><img class="rteImage" src="' + imagesPath + 'code.gif" width="25" height="24" alt="Code" title="Code" onClick="applyTa

这里我试图调用javascript函数onclick of anchor标记。当我调用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(“”);
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;
};
函数applyTag(对象,标记)
{
wrapText(obj,,'');
警报(“你好1”);
};
函数wrapText(obj、beginTag、endTag)
{
警报(“你好2”);
如果(对象的类型选择开始=='number')
{
var start=obj.selectionStart;
var end=obj.selectionEnd;
obj.value=obj.value.substring(0,开始)+beginTag+obj.value.substring(开始,结束)+endTag+obj.value.substring(结束,obj.value.length);
}
else if(文档选择)
{
obj.focus();
var range=document.selection.createRange();
if(range.parentElement()!=obj)返回false;
if(typeof range.text=='string')
document.selection.createRange().text=beginTag+range.text+endTag;
}
其他的
obj.value+=文本;
};

如何解决此问题?

您似乎在嵌套报价时遇到问题:

document.write('... onClick="applyTag(document.getElementById("rte1"),"code")"> ...')
解决这个问题的最简单方法可能是使用
,并对它们进行转义(因为您是用一个带引号的字符串生成document.write):


如果不转义双引号,那么一旦遇到第一个双引号,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(“”);
您应该使用

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(“”);

控制台中正在登录什么?我真的很困惑。这个答案根本不起作用。反斜杠在这个字符串中是没有意义的,因为它是单引号,即使它们被输出为HTML/XML,也不允许用反斜杠转义引号。为什么它被提升并被接受?@DaoWen字符串是单引号,它试图显示html元素,但当浏览器解释该元素时,它将看到onclick=“applyTag(document.getElementById(\'rte1'),\'code\”)。既然onclick在这里使用双引号,我们需要逃避它,你试过了吗?我做到了,但由于两个原因它不起作用。首先,转义的
\“
被JavaScript字符串解释为
,因此实际输出变成
onclick=“applyTag(document.getElementById(“rte1”),“code”)”
,与之前完全相同。其次,HTML/XML对转义字符使用
&
-转义的“实体”,而不是反斜杠。即使使用
\\“
,这实际上并不会转义引号。请试着运行你发布的代码,如果我错了请告诉我。@DaoWen谢谢你的帮助不客气。。。?现在你的答案基本上和我的一致,但至少它不再被接受和错误。将来,您可能希望测试您发布的代码。我还以为潘多拉会在接受你的答案之前测试你的解决方案。。。因此我感到困惑。
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>');