使用Javascript更新动态创建的HTML元素的属性
我有一个HTML表单,带有一个Select和7个PHP动态创建的输入框。默认情况下,这些框处于禁用状态,我的计划是通过更改Select的值来启用它们 为此,我构建了一个Javascript函数,但当我尝试更改Select时,出现了一个错误(UncaughtTypeError:cannotreadproperty'removeAttribute'为null),结果导致InputBox无法启用 提前感谢您帮助我解决此问题 HTML/PHP代码摘录:使用Javascript更新动态创建的HTML元素的属性,javascript,Javascript,我有一个HTML表单,带有一个Select和7个PHP动态创建的输入框。默认情况下,这些框处于禁用状态,我的计划是通过更改Select的值来启用它们 为此,我构建了一个Javascript函数,但当我尝试更改Select时,出现了一个错误(UncaughtTypeError:cannotreadproperty'removeAttribute'为null),结果导致InputBox无法启用 提前感谢您帮助我解决此问题 HTML/PHP代码摘录: <table> <td>
<table>
<td>
<select name="activity1" id="activity1" disabled onchange="enableInputs()">
<option value="1">Value 1</option>
<option value="2">Value 2</option>
<option value="3">Value 3</option>
</select>
</td>
<?php
$WeekDays = array("monday1","tuesday1","wednesday1","thursday1",
"friday1", "saturday1", "sunday1");
for($i=0;$i<=6;$i++)
{
echo
'<td>'.
'<input value="0" type="text" name="'.$WeekDays[$i].
'" id="'.$WeekDays[$i].
'" size="5" maxlength="5" disabled ;">'.
'</td>';
}
?>
</table>
值1
价值2
价值3
Javascript:
function enableInputs()
{
var rCnt = 1;
var DaysOfWeek = new
Array("monday","tuesday","wednesday","thursday", "friday", "saturday",
"sunday");
for (x=1;x<=rCnt;x++)
{
for (i=0;i<=6;i++)
{
document.getElementById(DaysOfWeek[i]+x).removeAttribute("disabled");
}
}
}
功能启用输入()
{
var-rCnt=1;
var DaysOfWeek=新
数组(“星期一”、“星期二”、“星期三”、“星期四”、“星期五”、“星期六”,
“星期日”);
对于(x=1;x,在PHP代码中,您给出了name
属性
<input name="'.$WeekDays[$i].'">
这将得到空字符串
解决方案:
将html更改为:
<input id="'.$WeekDays[$i].'">
或者使用document.getElementsByName(DaysOfWeek)
获取节点列表。错误消息非常清楚,您正在访问一个不存在的对象。可能是DaysOfWeek变量的索引错误,或者元素ID不存在。由您进行一些调试(console.log或alert)谢谢Pierre。元素ID不存在。我已经在我的帖子中添加了它,经过重新测试,但仍然没有乐趣。您可能是指“要么将html更改为:”而不是“name=XYZ”感谢您发现了这一点。我在PHP脚本中添加了缺少的id属性,但仍然得到相同的错误。查看页面上的源代码可以确认该id的元素存在。我感到困惑。那么您的DaysOfWeek[I]可能会+x
没有生成有效的字符串。最好也共享这部分代码。最终它现在可以正常工作了。拼图的最后一部分缺少了双引号!感谢大家的帮助。
<input id="'.$WeekDays[$i].'">