谁能帮我弄清楚为什么会这样 onclick
事件在我单击按钮时不会触发。
我直接在代码中插入函数,而不是引用外部.js文件。
并且,单击按钮时,将显示更多文本。按钮的内部文本将为“无读”。再次单击按钮后,文本将隐藏,按钮的内部文本将为“阅读更多”。
我很困惑。
<html>
<head>
<title>Form Validation:)</title>
<!-- <script src="recreative.js"></script> -->
<style>
#moreText {
display: none;
}
</style>
</head>
<body>
The history of Chemistry represents
<span id="dots">...</span>
<span id="moreText">a time span from ancients history to the present.</span>
<button id="button" onclick="show();">Read more</button>
<script>
function show() {
var dots = document.getElementById("dots");
var moreText = document.getElementById("moreText");
var btn = document.getElementById("button");
if (dots.style.display = "none") {
dots.style.display = "inline";
btn.innerHTML = "Read more";
moreText.style.display = "none";
} else {
dots.style.display = "none";
btn.innerHTML = "Read less";
moreText.style.display = "in line";
}
}
</script>
</body>
</html>
6条答案
按热度按时间sshcrbum1#
你用的是
=
,这是一个Assignment Operator
. 要比较两个值,请使用Equal Operator (==)
或者Strict equal Operator (===)
在if-else
声明,即。a1o7rhls2#
这是导致问题的陈述:
if (dots.style.display = "none")
.在chrome控制台中运行以下语句:
dots.style.display = "none"
. 它返回“无”。因此,始终执行第一个块。你的第二个else块也没用。
你需要
dots.style.display == "none"
,用于比较相等值。soat7uwm3#
使用
=
如果条件是错误的,逻辑也是错误的,这就是文本不显示的原因h7appiyu4#
您的代码中有一些问题
在赋值的if语句中,首先应使用“==”或“==”检查值
第二,在
moreText.style.display = "in line";
有一个额外的空间写“inline”您应该通过写日志控制台开始调试,尝试跟踪和跟踪程序祝您好运
nqwrtyyt5#
你和我核对一下对账单
=
但是,您必须使用==
比较语句的运算符。所以只要改变这条线
对此
你应该做的另一个改变。我们没有
in line
展示。所以把它改成inline
有了这个,你的问题就会解决。但我有两个建议。首次使用
addEventListener
用于您的事件,例如:单击、鼠标悬停等这个例子有
addEventListener
成为:或者另一种方法是
第二,使用
querySelector
而不是getElementById
或getElementsByClassName
或getElementsByName
等等所以你可以替换这个代码
用这个
kcwpcxri6#
你的代码几乎是正确的。有一个虫子在里面吗
if
您分配了一个值而不是比较,另一个错误是您使用了这个术语in line
而不是inline
.