0

我是编程新手,我有一个小问题

我有一个名为“fr”的表单,一个名为“in”的输入文本框和一个值为“my text”的变量“n”,这是我的代码:

<html>
<head>
<script LANGUAGE="JavaScript">
var n = "my text";
document.fr.in.value = n;
</script>
</head>

<body>
<form name="fr">
<input name="in" size="3">
</form>
</body>
</html>

但不知何故输入“in”不显示文本“我的文本”我一直在浏览互联网但我找不到任何有效的解决方案..我尝试的一切都不起作用。我想我在做一些非常简单的错误。请帮我。

4

3 回答 3

3

document.fr在调用时还不存在;因此,它后面的所有东西也不存在,所以它抛出一个TypeError

TypeError: Cannot read property 'in' of undefined

要解决此问题,请使用您喜欢的方法移动要在节点存在后调用的代码

window.addEventListener('load', function () {
    var n = "my text";
    document.fr.in.value = n;
});

我会进一步指出;

  1. 查找元素的首选方法是为其提供id属性并使用document.getElementById. id必须是唯一的。
  2. 使用language属性<script>depreciated,如果要指定语言,请使用type属性type="text/javascript"type="application/javascript"
  3. 当脚本未按预期工作时打开控制台通常会立即向您显示原因。这通常使用F12.
于 2013-08-18T12:31:46.097 回答
0

正如 Paul 指出的那样,只有在确定您感兴趣的元素已经加载时,您才应该尝试获取页面元素。因此,在这种情况下,您可以通过在页面完全加载时运行代码并获取对输入的引用来设置输入字段的值,如下所示:

window.addEventListener("load", function () {
    var n = "my text";
    var myInput = document.getElementsByName("in");
    myInput[0].value = n;
});

请注意,因为getElementsByName()返回一个数组,所以您必须使用 [0] 来获取第一个元素。

于 2013-08-18T12:39:14.020 回答
0

正如 Paul S. 在他的回答中所解释的那样,您应该在定义表单后初始化脚本。所以你可以这样做,

<html>
<head>
</head>

<body>
<form name="fr">
<input name="in" size="3">
</form>

<script type="text/javascript">
var n = "my text";
document.forms.fr.in.value = n;
</script>
</body>
</html>

这将在定义表单后运行脚本。或者将此代码放在某个函数中,并在定义(即加载)表单后实例化该函数。

于 2013-08-18T12:45:51.387 回答