javascript - 从js调用函数但它不起作用
问题描述
我在表单标签中编写了代码,当用户单击单选按钮时,应该会出现课程,并且这些课程与他们的专业相关,它工作正常,但是当我放置表单标签时它不再工作了。由于 PHP,我使用了表单标签。
JavaScript:
<script>
function cs() {
if (document.getElementById("cs").checked == true) {
document.getElementById("isco").style.display = "none";
document.getElementById("cnco").style.display = "none";
}
document.getElementById("csco").style.display = "initial";
}
function is() {
if (document.getElementById("is").checked == true) {
document.getElementById("csco").style.display = "none";
document.getElementById("cnco").style.display = "none";
}
document.getElementById("isco").style.display = "initial";
}
function cn() {
if (document.getElementById("cn").checked == true) {
document.getElementById("isco").style.display = "none";
document.getElementById("csco").style.display = "none";
}
document.getElementById("cnco").style.display = "initial";
}
</script>
div style="background-color: white; text-align: left; padding-left:100px; padding-bottom: 10px">
<br><br><br>
<h3>Sign up</h3>
<form id="sign" name="sign" method="POST" action="sign.php">
<label for="major">Major:</label>
<input type="radio" name="major" id="cs" value="cs" onclick="cs()">CS
<input type="radio" name="major" id="is" value="is" onclick="is()">IS
<input type="radio" name="major" id="cn" value="cn" onclick="cn()">CN
<div style="display: none;" id="csco">
<label for="courses">Select the courses you finished or takes currently: </label>
<br><br>
<input type="checkbox" name="courses" value="pr">Professional Responsibility
<input type="checkbox" name="courses" value="se">Software Engineering
<input type="checkbox" name="courses" value="alg">Analysis and Design of Algorithms
<input type="checkbox" name="courses" value="web">Web-based Systems
<br>
</div>
<div style="display: none;" id="isco">
<label for="courses">Select the courses you finished or takes currently: </label>
<br><br>
<input type="checkbox" name="courses" value="web">Web-based Systems
<input type="checkbox" name="courses" value="sad">System Analysis and Design(2)
<br>
</div>
<div style="display: none;" id="cnco">
<label for="courses">Select the courses you finished or takes currently: </label>
<br><br>
<input type="checkbox" name="courses" value="np">Introduction to Network Programming.
<input type="checkbox" name="courses" value="nd">Network Design or Network Simulation and Modeling.
<br>
</div>
<br>
<button name="sig" id="sig" style="padding: 10px">Sign up</button>
</form>
</div>
有什么方法可以让 JavaScript 工作吗?
解决方案
是的,避免直接在 html 中添加侦听器。始终尝试通过脚本添加它们。
下面的代码有效。看看我onclick
在 JS 脚本中添加了侦听器,使用document.getElementById("elementId").onclick = functionToAssign
(在这种情况下不带括号的函数名称)。
不要忘记onclick
从 HTML 中删除。
您当前的代码不起作用可能是因为在呈现 HTML 时,尚未定义函数。
function cs() {
if (document.getElementById("cs").checked == true) {
document.getElementById("isco").style.display = "none";
document.getElementById("cnco").style.display = "none";
}
document.getElementById("csco").style.display = "initial";
}
document.getElementById("cs").onclick = cs
function is() {
if (document.getElementById("is").checked == true) {
document.getElementById("csco").style.display = "none";
document.getElementById("cnco").style.display = "none";
}
document.getElementById("isco").style.display = "initial";
}
document.getElementById("is").onclick = is
function cn() {
if (document.getElementById("cn").checked == true) {
document.getElementById("isco").style.display = "none";
document.getElementById("csco").style.display = "none";
}
document.getElementById("cnco").style.display = "initial";
}
document.getElementById("cn").onclick = cn
<div style="background-color: white; text-align: left; padding-left:100px; padding-bottom: 10px">
<br><br><br>
<h3>Sign up</h3>
<form id="sign" name="sign" method="POST" action="sign.php">
<label for="major">Major:</label>
<input type="radio" name="major" id="cs" value="cs">CS
<input type="radio" name="major" id="is" value="is">IS
<input type="radio" name="major" id="cn" value="cn">CN
<div style="display: none;" id="csco">
<label for="courses">Select the courses you finished or takes currently: </label>
<br><br>
<input type="checkbox" name="courses" value="pr">Professional Responsibility
<input type="checkbox" name="courses" value="se">Software Engineering
<input type="checkbox" name="courses" value="alg">Analysis and Design of Algorithms
<input type="checkbox" name="courses" value="web">Web-based Systems
<br>
</div>
<div style="display: none;" id="isco">
<label for="courses">Select the courses you finished or takes currently: </label>
<br><br>
<input type="checkbox" name="courses" value="web">Web-based Systems
<input type="checkbox" name="courses" value="sad">System Analysis and Design(2)
<br>
</div>
<div style="display: none;" id="cnco">
<label for="courses">Select the courses you finished or takes currently: </label>
<br><br>
<input type="checkbox" name="courses" value="np">Introduction to Network Programming.
<input type="checkbox" name="courses" value="nd">Network Design or Network Simulation and Modeling.
<br>
</div>
<br>
<button name="sig" id="sig" style="padding: 10px">Sign up</button>
</form>
</div>
推荐阅读
- python - 我的张量流有问题吗?
- reactjs - JsPDF - 小屏幕上的图像剪切
- python - KeyError:'默认'。这是我尝试运行应用程序时遇到的错误
- rest - 如何在 Swagger UI 中的数组查询参数中提供值
- paypal - Worldpay PayPal 错误:BAD_REQUEST,未指定所需 URL 且未定义默认值
- php - 单个列过滤(选择输入)可变
- android - 如何在 C# 上使用预览为 android 创建 PDF 查看器
- python - 检查数字是否在给定范围内:未能按指示打印消息
- r - 不是散点图中的所有值
- html - 在另一个组件Angular 7中绑定ngModel上的值