JavaScript对象不工作
JavaScript object not working
我正面临JavaScript对象的问题。我有一个页面上的一些文本应该转换为文本字段时,点击。问题是,当我单击文本时,控制台显示错误消息
"textNode未定义或为null且tn未定义"。
请帮助,我想以一种方式解决这个问题,这样我就不必将JavaScript代码从head标签移动到任何其他位置。
下面是我的代码:<!DOCTYPE HTML>
<html>
<head>
<title>Span to Text Box - Demo - DOM</title>
<script type="text/javascript" language="javascript">
function preload()
{
if(!tn) var tn=new Object();
tn.variables=
{
textboxNode: document.getElementById('textbox'),
textNode: document.getElementById('text'),
textValue: textNode.firstChild.nodeValue,
doneButton: document.getElementById('done')
};
}
function change()
{
tn.variables.textboxNode.setAttribute('value', textValue);
tn.variables.textNode.style.display = 'none';
tn.variables.textboxNode.setAttribute('type','text');
tn.variables.doneButton.setAttribute('type','button');
}
function changeBack()
{
tn.variables.textNode.firstChild.nodeValue = textboxNode.value;
tn.variables.textNode.style.display = 'block';
tn.variables.textboxNode.setAttribute('type', 'hidden');
tn.variables.doneButton.setAttribute('type','hidden');
}
</script>
</head>
<body onload= "preload()">
<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>
对象tn
是preload
函数的本地对象
将其定义为全局变量:
var tn = new Object();
function preload()
{
tn.variables=
{
//....
}
}
另外,当你只定义对象时,你不能获得其他属性值。
将textValue
改为函数:
tn.variables =
{
textboxNode: document.getElementById('textbox'),
textNode: document.getElementById('text'),
textValue: function() {
return this.textNode.firstChild.nodeValue;
},
doneButton: document.getElementById('done')
};
然后将其作为函数调用,例如:
tn.variables.textboxNode.setAttribute('value', tn.variables.textValue());
我认为你的tn变量在全局范围内没有正确设置。试着像这样修改你的javascript的顶部:
<script type="text/javascript" language="javascript">
var tn = null;
function preload()
{
if(!tn)
{
tn=new Object();
}
tn.variables=
{
textboxNode: document.getElementById('textbox'),
textNode: document.getElementById('text'),
textValue: textNode.firstChild.nodeValue,
doneButton: document.getElementById('done')
};
}
首先,全局定义tn -在preload
相关文章:
- 读取在具有IE的工作程序中生成的对象URL
- 我怎样才能让jQuery即使在尚未创建的对象上也能工作
- JSON.stringify没有'在更改的对象上无法按预期工作.如何处理
- 如何让我的正则表达式代码在我的dojo cellWidget对象上工作
- dropable的Over事件是't工作正常,在可拖动对象被拖放到贪婪的可拖动对象上并再次拖动后
- 地图如何在 Ecmascript 6 中使用对象键工作
- 了解 JavaScript 对象实例或工作流
- JavaScript 返回对象未按预期工作
- 如何让、要求和原型协同工作以在 javascript 中制作对象
- 谷歌应用程序脚本-正在尝试使用getUrl.TypeError:在对象工作表中找不到函数getUrl
- 一个对象怎么能像返回自身和另一个对象一样工作
- "键“;jQuery中的对象无法正常工作
- 对象引用的隐式传递是如何工作的
- dojo类对象的工作原理
- app.use(restify.bodyParser())无法工作,因为req对象为空
- 从服务器端将属性绑定到套接字对象;似乎不能正常工作
- 为什么mongoose.connect()在mongoose对象上没有作为方法出现时工作得很好
- 在 JavaScript 不工作对象中连接两个变量
- JS循环插件在IE11中不工作.对象不支持属性或方法循环
- Javascript 对象:如何创建包含工作对象的封装