javascript - 单击时未触发onclick
问题描述
我面临一个简单的JS问题。我写了这段代码:
function dash1() {
var self = this;
document.getElementById("vizContainer").src = "https://xxx";
}
function dash2() {
var self = this;
document.getElementById("vizContainer").src = "https://yyy";
}
<div class="mf123_options d">
<input onclick="dash1();" style="margin:0.5rem;" type="radio" id="first_dashboard" name="mf123_dashboards" value="first_dashboard" checked>
<label for="first_dashboard">1st Dashboard</label>
</div>
<div class="mf123_options d">
<input onclick="dash2();" style="margin:0.5rem;" type="radio" id="second_dashboard" name="mf123_dashboards" value="second_dashboard">
<label for="second_dashboard">2nd Dashboard</label>
</div>
<iframe id="vizContainer" style="width: 100%; height: 100%;" src="/default.asp">
</iframe>
当我尝试单击更改 iframe 时,它不起作用。我尝试了很多没有结果的事情
解决方案
Click
事件仅在您单击单选按钮本身时才有效,而不是在您单击伴随的标签元素时。请改用change
事件。
function dash1() {
var self = this;
document.getElementById("vizContainer").src = "https://placekitten.com/200/300";
}
function dash2() {
var self = this;
document.getElementById("vizContainer").src = "https://placekitten.com/g/200/300";
}
<div class="mf123_options d">
<input onchange="dash1();" style="margin:0.5rem;" type="radio" id="first_dashboard" name="mf123_dashboards" value="first_dashboard" checked>
<label for="first_dashboard">1st Dashboard</label>
</div>
<div class="mf123_options d">
<input onchange="dash2();" style="margin:0.5rem;" type="radio" id="second_dashboard" name="mf123_dashboards" value="second_dashboard">
<label for="second_dashboard">2nd Dashboard</label>
</div>
<iframe id="vizContainer" style="width: 100%; height: 100%;" src="/default.asp">
</iframe>
另外我建议不要on<event>
在 HTML 代码中使用属性,而是使用addEventListener
方法
function dash1() {
document.getElementById("vizContainer").src = "https://placekitten.com/200/300";
}
function dash2() {
document.getElementById("vizContainer").src = "https://placekitten.com/g/200/300";
}
document.getElementById('first_dashboard').addEventListener('change', dash1)
document.getElementById('second_dashboard').addEventListener('change', dash2)
.mf123_options [type=radio] {
margin:0.5rem;
}
<div class="mf123_options d">
<input type="radio" id="first_dashboard" name="mf123_dashboards" value="first_dashboard" checked>
<label for="first_dashboard">1st Dashboard</label>
</div>
<div class="mf123_options d">
<input type="radio" id="second_dashboard" name="mf123_dashboards" value="second_dashboard">
<label for="second_dashboard">2nd Dashboard</label>
</div>
<iframe id="vizContainer" style="width: 100%; height: 100%;" src="/default.asp">
</iframe>
推荐阅读
- git - Git checkout 正在将文件从功能分支移动到开发分支
- c# - 如何从对象 {System.Collections.Generic.KeyValuePair 中提取值
? - apache-kafka - Flume TAILDIR Source to Kafka Sink-静态拦截器问题
- sql - 根据具有可变年份的日期制作新列
- powershell - 为用户帐户添加多个属性
- windows - 如何创建批处理文件以运行同一目录中的所有python文件
- mysql - 一条 SQL 语句代替两条
- python - 没有线坐标的 3d 绘图
- react-native - StackNavigator 标题样式对 createBottomTabNavigator 屏幕没有影响?
- jquery - 更改父元素jquery中所有元素的类