我有一个javascript函数,但如果我使用它,它不起作用。如果我在html上没有使用相同的代码,它确实有效。
<script type="text/javascript">
function jon(str) {
id = 'j'+str;
getElementById(id).setAttribute('class', '');
}
function jover(str) {
id = 'j'+str;
getElementById(id).setAttribute('class', 'hide');
}
</script>
<form id="lijst" action="" method="POST" onSubmit="return formOK();">
<table>
<tr onMouseOver="getElementById('jtitle').setAttribute('class', '');" onMouseOut="getElementById('jtitle').setAttribute('class', 'hide');">
<th>* Title</th>
<td><input type="text" name="title" /></td>
<td id="jtitle" class="hide">Vul een film of serie titel in.</td>
</tr>
<tr onMouseOver="jon('type');" onMouseOut="jover('type');">
<th>* Type</th>
<td><select name="type"><option value="film">Film</option><option value="serie">Serie</option></select></td>
<td id="jtype" class="hide"></td>
</tr>
标题确实有效,但类型不起作用。
控制台说没有定义getElementById()。我试图将var id = ''
用于函数,但这不起作用。
那我该怎么办?
答案 0 :(得分:3)
您需要前缀document.
:
document.getElementById(id).setAttribute(...);
getElementById
方法定义了document
方法。要在任何对象上调用方法,您需要使用定义它的对象,然后使用点.
和方法名称。例如:
document.getElementById()
| ^ |
| |
| |
[object] [method]
唯一的例外是window
对象,当您在其上定义函数或变量时不需要它;你可以使用它,就好像它是独立的。但实际上,所有全局变量都在窗口对象上。这可能是由于在创建变量时意外省略了var
关键字。例如:
x = 5;
假设先前未定义变量x
。由于使用x
关键字创建的var
不,因此将其放在window
对象上。我们可以在控制台中查看它:
>> window.x;
: 5
这可能会导致棘手的情况,因为它可能与外部作用域中声明的另一个x
变量冲突。这就是为什么用var
定义总是很重要的原因。没有理由不这样做。