将变量分配给函数在JavaScript中不起作用
Assign variable to function does not work in JavaScript?
我有一些代码可以读取突出显示的文本。但是我在JavaScript中为函数分配变量时遇到了问题。它没有按预期正确调用函数。
<html>
<head>
<script type="text/javascript">
function getSelectionText()
{
var text = "";
if (window.getSelection)
{
text = window.getSelection().toString();
}
return text;
}
var txt = getSelectionText(); //<-----This is not working???
</script>
</head>
<body>
<p id="p1">Select some of this text then press the button<br /></p>
<button onclick= document.write(txt) >GetText</button>
</body>
</html>
如果我在写参数中使用该函数,它会起作用。
<button onclick= document.write(getSelectionText()) >GetText</button>
如果我给函数赋值,为什么不能正确调用它?
-ScottA
页面加载时调用getSelectionText()
,因此此时不会选择任何文本。
您需要从事件处理程序中调用它。
此外,您是:
- 使用内部事件属性(不应该使用)
- 不引用你的属性值(这是不好的做法)
- 加载文档后(当文档处于关闭状态时)尝试调用
document.write
这不是分配变量,而是在调用函数时分配变量。
在您的工作版本中,按下按钮时会调用getSelectionText()。在不起作用的版本中,一旦加载<script>
标记,就会调用getSelectionText()。。。并且当按下按钮时,先前呼叫的结果就是正在使用的结果。
因为你想要的是在按下按钮时调用函数,所以这就是你明确需要做的。
我刚刚让您的代码开始工作。大部分情况下。基本上,我不依赖txt
变量,而是使用您的主函数打印到网页上。你为什么不试试这个,看看你想改进什么。
您的行var txt=。。。正在将全局变量txt初始化为getSelectionTxt()的返回值
理解全局变量是如何初始化的关键是要意识到赋值是在加载javascript时进行的,而不一定是在加载HTMLDOM时进行的。因此,在许多情况下,在DOM的其他部分准备就绪之前,全局分配的评估会太早。
延迟的一种方法是使用body.nload事件或函数。您可以在body标记中设置事件,例如,在适当的时间调用您的某个函数。
<body onload="initializeMyGlobalsFromDom()">
其中initializeMyGlobalsFromDom是一个包含行的函数txt=getSelectionTxt();//注意:省略var关键字,将txt称为全局
(您应该继续在函数外声明"var.txt;",最佳实践可能会在函数内使用它之前说。)
还有一些方法可以在不需要HTML标记中的属性的情况下挂接事件。在全局上下文中(现在您有var txt=…),您可以执行
window.addEventListener("onload",initializeMyGlobalsFromDom);
另一种选择是将函数本身分配给全局变量,如:
var txtFn=getSelectionText;//钞票分配功能不是功能返回值
然后,当你使用全局变量时,你必须称之为:
<button onclick="document.write(txt())">GetText</button>
- 幻灯片滚动javascript不起作用
- 当我在浏览器中打开HTML文件时,javascript不起作用
- 来自MDN的循环示例的JavaScript不起作用
- 在IE中切换javascript不起作用的复选框
- 在SVG中创建带有外来对象的文本区域的Javascript不起作用
- 寻呼<李>javascript不起作用
- 想制作一个基于URL的音频播放器,但Javascript不起作用
- 从Android设备浏览时Javascript不起作用
- 在 Javascript 不起作用的情况下为数字添加逗号
- 获取PHP变量的JavaScript不起作用
- 有些JavaScript不起作用
- 保存HTML文件后,Javascript不起作用
- onClick javascript不起作用
- 在Wicket ModalWindow中使用Panel时,HTML中的Javascript不起作用
- Jquery顶部的两行Javascript不起作用
- 当我通过Node服务器提供HTML时,为什么我的页面Javascript不起作用
- Javascript不起作用,但当放置断点并从chrome调试器工具中单击文件时,它可以正常工作
- 为不同的屏幕分辨率加载css样式的Javascript不起作用
- 在IE9中javascript不起作用,但在打开控制台后它就起作用了
- 为什么Javascript不起作用