如何调用javascript函数
这里我试图调用javascript函数onclick of anchor标记。当我调用onclick函数时,什么都没有发生 我的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
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>');