Javascript全局变量没有按预期工作.的帮助
Javascript Global Variables Not Working as expected. Help?
我是Javascript新手。我正面临着一个问题与全局变量。我无法弄清楚为什么全局变量不工作,因为代码看起来不错。请帮我解决这个问题。我将首先简要地解释一下代码。我有一个页面上的一些文本更改为文本字段时单击。当我在函数体内定义变量时,代码开始正常工作。当像以下代码那样全局定义这些变量时,控制台显示此错误:未定义变量。下面是我的代码:
<!DOCTYPE HTML>
<html>
<head>
<title>Span to Text Box - Demo - DOM</title>
<script type="text/javascript" language="javascript">
var textNode = document.getElementById('text');
var textValue = textNode.firstChild.nodeValue;
var textboxNode = document.getElementById('textbox');
var doneButton = document.getElementById('done');
function change()
{
textboxNode.setAttribute('value', textValue);
textNode.style.display = 'none';
textboxNode.setAttribute('type','text');
doneButton.setAttribute('type','button');
}
function changeBack()
{
textNode.firstChild.nodeValue = textboxNode.value;
textNode.style.display = 'block';
textboxNode.setAttribute('type', 'hidden');
doneButton.setAttribute('type','hidden');
}
</script>
</head>
<body>
<p id="text" onClick="change()">Click me!</p>
<form onSubmit="return false;">
<input type="hidden" id="textbox" />
<input type="hidden" id="done" onClick="changeBack()" value="Done" />
</form>
</body>
</html>
请帮忙!
正如Adam所说,问题是您在文档加载之前正在文档上运行javascript。有很多方法可以解决这个问题,但最简单的是将你的javascript代码移动到正文的末尾,这样文档就已经被解析过了,在你的代码像这样运行之前就准备好了:
<!DOCTYPE HTML>
<html>
<head>
<title>Span to Text Box - Demo - DOM</title>
</head>
<body>
<p id="text" onClick="change()">Click me!</p>
<form onSubmit="return false;">
<input type="hidden" id="textbox" />
<input type="hidden" id="done" onClick="changeBack()" value="Done" />
</form>
<script type="text/javascript" language="javascript">
var textNode = document.getElementById('text');
var textValue = textNode.firstChild.nodeValue;
var textboxNode = document.getElementById('textbox');
var doneButton = document.getElementById('done');
function change()
{
textboxNode.setAttribute('value', textValue);
textNode.style.display = 'none';
textboxNode.setAttribute('type','text');
doneButton.setAttribute('type','button');
}
function changeBack()
{
textNode.firstChild.nodeValue = textboxNode.value;
textNode.style.display = 'block';
textboxNode.setAttribute('type', 'hidden');
doneButton.setAttribute('type','hidden');
}
</script>
</body>
</html>
这个错误很可能是由于在DOM节点准备好之前抓取它们引起的:
var textNode = document.getElementById('text');
这很可能返回null
或undefined
,因为DOM元素还没有创建。
将此脚本放在body的结尾应该可以解决您的问题。
或者,如果您想使用jQuery,您可以在
中完成所有这些$(document).ready(function() {
var textNode = document.getElementById('text');
}
相关文章:
- 我根据解决方案按类对
- 元素进行分组,但需要帮助了解它的工作原理
- 如何让应用程序帮助程序方法在发送的请求为 JS 格式时工作
- 如何在node.js的帮助下使用网站在localhost上工作
- 谷歌地图API v3动态标记,帮助使数组工作
- 需要帮助让 Zapier 脚本示例在 JSFiddle 中工作
- 如果可能的话,我需要帮助了解这个jQuery过滤器函数是如何工作的,逐行工作
- ember.js将itemController与每个帮助程序一起使用无法按预期工作
- 需要帮助使javascript/html滑块工作
- Javascript - 随机数组无法正常工作.需要帮助
- 有人可以帮助我让我的AES加密在Java,Javascript和C#之间工作吗?
- 自定义验证摘要HTML帮助程序没有'不在客户端工作
- 外部Javascript文件不工作,需要帮助
- 我需要帮助让JQuery函数幻灯片向下在我的代码中工作
- 需要帮助让这个字符串的Javascript工作
- jQueryClick事件只工作一次(以前的StackOverflow回答都没有帮助)
- 需要帮助让我的nodemailer正常工作
- Javascript全局变量没有按预期工作.的帮助
- 需要帮助获得Bootstrap 3 Scrollspy与自动折叠移动菜单工作
- Nodejs commander.js '别名'没有像预期的那样工作——帮助
- 我的JavaScript不工作!帮助:(