我正在使用rangy脚本执行一个简单的jquery函数,但我无法使其工作,它说上面的错误。
<div onclick="cmon('cenas');"> cenas </div>
<textarea class="guides_chapters_textarea" id="textarea" name="gmessage" rows="7" cols="25"> Insert starting items here</textarea>
使用Javascript:
function cmon(text){
$("#textarea").insertText(text, 0, "collapseToEnd");
}
Jsfiddle:http://jsfiddle.net/VmhMM/
答案 0 :(得分:3)
为了让您的示例正常运行,您可以执行一些操作。严格来说,您的代码实际上没有任何问题。错误在于如何使用/添加代码到页面。
通过直接在window
对象上设置函数,Here is one让代码工作的方法。
window.cmon = function cmon(text){
$("#textarea").insertText(text, 0, "collapseToEnd");
}
@elclanrs在问题评论中提到的另一种方法(在这种情况下是一个更好的选项)指向JSFiddle左侧面板中的设置,用于处理运行函数的位置。默认情况下,它会将其添加到onLoad
事件中,这会使事件在事件内定义时超出范围。这正是JSFiddle对您的代码所做的:
$(window).load(function(){
function cmon(text){
$("#textarea").insertText(text, 0, "collapseToEnd");
}
});
正在进行的概念称为closures。因此,在定义函数时,内部定义的任何变量或其他函数都无法从外部访问。如果在全局对象或新定义函数范围之外的任何其他对象上设置变量(就像我在链接的示例中所做的那样),您可以访问在闭包之外定义的内容。
答案 1 :(得分:0)
你必须在左侧使用(没有头部包裹)。这意味着您必须在标记之间加载此脚本。但如果您仍想使用它onload:
<div id="cmon"> cenas </div>
<textarea class="guides_chapters_textarea" id="textarea" name="gmessage" rows="7" cols="25"> Insert starting items here</textarea>
<script>
$("#cmon").click(function(){
cmon($(this).text());
});
function cmon(text){
$("#textarea").insertText(text, 0, "collapseToEnd");
}
</script>
以下是解决方案:http://jsfiddle.net/VmhMM/2/