Javascript 未捕获类型错误:无法读取属性';风格';关于回音中的脚本的空值
我正在尝试更改Javascript 未捕获类型错误:无法读取属性';风格';关于回音中的脚本的空值,javascript,php,jquery,css,echo,Javascript,Php,Jquery,Css,Echo,我正在尝试更改onclick事件上div的颜色 下面是我得到的错误: 未捕获的TypeError:无法读取null的属性“style” 代码如下: function changeSelection (newClick) { document.getElementById(newClick).style.backgroundColor="#4bc970"; document.getElementById(newClick).style.color="#FFFFFF
onclick
事件上div的颜色
下面是我得到的错误:
未捕获的TypeError:无法读取null的属性“style”
代码如下:
function changeSelection (newClick) {
document.getElementById(newClick).style.backgroundColor="#4bc970";
document.getElementById(newClick).style.color="#FFFFFF";
if(oldClick!="" && document.getElementById(oldClick)!=null && oldClick != newClick){
document.getElementById(oldClick).style.backgroundColor="#d2d2d2";
document.getElementById(oldClick).style.color="#332836";
}
oldClick = newClick;
}
回声出现在另一个php页面上
echo ("<tr><td><div class='courseDiv' onclick=changeSelection(".$classID.");><p class='textInsideLeftTable'>".$className. "</p><p class='arrow'>></p></div></td></tr>");
echo(“$className.”
”;
如有任何意见,将不胜感激
更多代码:
<?php
require("connect.php");
session_start();
$stmt = $db->prepare('SELECT * FROM users INNER JOIN studentparent ON users.parentID = studentparent.parentID INNER JOIN studentsclasses ON studentparent.studentID = studentsclasses.studentID INNER JOIN classes ON classes.classID = studentsclasses.classID WHERE users.parentID=:parentID');
$stmt->execute(array(
':parentID' => $_SESSION['parentID']
)) or die(var_dump($stmt->errorInfo()));
$result = $stmt->fetchAll();
foreach ($result as $row) {
$className = $row['classCode'];
$classID = $row['classID'];
echo ("<tr><td><div class='courseDiv' onclick=\"changeSelection('".$classID."');\"><p class='textInsideLeftTable'>".$className. "</p><p class='arrow'>></p></div></td></tr>");
}
?>
您需要在其周围添加单引号,以便JavaScript将其视为字符串而不是变量
changeSelection('".$classID."')
您需要在其周围添加单引号,以便JavaScript将其视为字符串而不是变量
changeSelection('".$classID."')
getElementById(newClick)为空表示作为newClick传递的id不存在或在当前上下文中找不到
添加语句console.log(newClick);添加到第一行的changeSelection()。并检查控制台(F12开发人员工具),查看传递的值是什么。文档。getElementById(newClick)为空表示传递为newClick的id不存在或在当前上下文中找不到
添加语句console.log(newClick);添加到第一行的changeSelection()。然后检查控制台(F12开发者工具),看看传递的值是什么。所以我对PHP的了解非常有限,但据我记忆所及,你不应该使用
changeSelection('"$classID"')
而不是
changeSelection('".$classID."')
为什么$classId前后有两个点,如果您已经将div标记的Id存储在一个名为classId的变量中,那么您只需要$classId就可以获取其值和文档。getElementById(“classId_值”)应该会返回元素。因此我对PHP的了解非常有限,但据我记忆所及,你不应该使用
changeSelection('"$classID"')
而不是
changeSelection('".$classID."')
如果您已将div标记的Id存储在名为classId的变量中,那么为什么$classId前后有两个点?您只需$classId即可获取其值和document.getElementById(“classId_值”)应该返回元素。是否检查了$classID的值是否正确,html结构中是否有一个元素具有该id,并且javascript仅在页面加载了所有必需的dom元素后才会触发?是的。如果我取出点击事件并将其放在关闭类courseDiv的>之后,它会显示每个div的正确id(html格式)。我认为这是一个语法错误,我找不到。请在PHP生成div后向我们显示页面。我在原始帖子中添加了一张图片。:)您是否检查了$classID的值是否正确,并且您的html结构中只有一个元素具有该id,并且只有当页面加载了所有必需的dom元素时才会触发javascript?是的。如果我取出点击事件并将其放在关闭类courseDiv的>之后,它会显示每个div的正确id(html格式)。我认为这是一个语法错误,我找不到。请在PHP生成div后向我们显示页面。我在原始帖子中添加了一张图片。:)非常感谢。我已经做了修改,但仍然得到相同的错误。echo(“”$className.
”;哦,也许还有一件事可能会引起麻烦:整件事也应该放在括号里。像onclick=\“changeSelection(“.classID.”);\“遗憾的是,它仍然没有解决问题,谢谢。我已经做了修改,但仍然得到相同的错误。echo(“”$className.
”;哦,也许还有一件事可能会引起麻烦:整件事也应该放在括号里。比如onclick=\“changeSelection(.$classID)”;\“遗憾的是,它仍然没有解决我考虑到你所说的问题。我已经尝试过了,但仍然存在相同的问题。是否将ID属性的值存储在classId变量中??还是类属性的值。。例如,text_random然后classId应该包含“div_id”,而不是“div_class”作为classId变量中的值。我真的不明白你在回答的第二部分中的意思。例如,如果你的div看起来像这样。。。text\u random$classID=“div\u id”是正确的。你的代码会工作的$classID=“div\u class”是错误的。根据我的理解,您的代码将无法工作,这是您希望我尝试的:echo(“”)。$className。”
”;它不起作用。我也试过用$classID。我考虑了你说的话。我已经尝试过了,但仍然存在相同的问题。是否将ID属性的值存储在classId变量中??还是类属性的值。。例如,text_random然后classId应该包含“div_id”,而不是“div_class”作为classId变量中的值。我真的不明白你在回答的第二部分中的意思。例如,如果你的div看起来像这样。。。text\u random$classID=“div\u id”是正确的。你的代码会工作的$classID=“div\u class”是错误的。根据我的理解,您的代码将无法工作,这是您希望我尝试的:echo(“”)。$className。”
”;它不起作用。我还使用了.classID进行了尝试。如果它打印了正确的id,则表示文档中不存在具有该id的元素。请检查元素是否存在。我已对classID进行了回显,它也给了我相同的值什么是oldClick?它的定义是什么?它从哪里获得价值?还要检查函数中哪一行给出了错误。在我的页面顶部。var oldClick=“”;你在哪一行上出错?您将在控制台(F12开发人员工具)中找到它。如果它打印了正确的id,则表示文档中不存在具有该id的元素。请检查元素是否存在。我已经做了classID的回显,它也给了我相同的值What