<textarea id="textarea" rows="10" cols="50" maxlength="10"></textarea>
<span id="counter">10</span>
<script>
let textArea=document.getElementById('textarea'),
counter=document.getElementById('counter'),
number=counter.innerHTML;
textArea.oninput=function(){
counter.innerHTML=number-textArea.value.length;
if(number==0){
number.style.color="red";//number.style is undefined
}else{
number.style.color="black";
}
}
</script>
为什么说变量(元素)。风格未定义?我试过。style.color="red";在不同的代码&它的工作原理!
-
首先您必须与counter进行比较。因为你更新了它的值。
counter的值不会改变,一直是10,如下面的代码片段所示。 -
number的值为counter.innerHTML;
number=counter.innerHTML;
这意味着它没有样式。属性,而应该设置样式。计数器元素的颜色。
<textarea id="textarea" rows="10" cols="50" maxlength="10"></textarea>
<span id="counter">10</span>
<script>
let textArea=document.getElementById('textarea'),
counter=document.getElementById('counter'),
number=counter.innerHTML;
textArea.oninput=function(){
counter.innerHTML=number-textArea.value.length;
if(counter.innerHTML==0){
counter.style.color="red";//number.style is undefined
}else{
counter.style.color="black";
}
}
</script>
补充Scott Marcus的评论:您让number的值为span的第一个值,即10。它不会随着输入而改变。所以在if语句中使用它是没有用的因为它总是10。相反,你应该使用counter。
let textArea=document.getElementById('textarea'),
counter=document.getElementById('counter'),
number=counter.innerHTML;
textArea.oninput=function(){
counter.innerHTML=number-textArea.value.length;
if(counter.innerHTML==0){
counter.style.color="red";//number.style is undefined
console.log("here");
}else{
counter.style.color="black";
console.log("there");
}
}
<textarea id="textarea" rows="10" cols="50" maxlength="10"></textarea>
<span id="counter">10</span>
编辑:说明
我猜你想在输入长度达到10个字符时给用户反馈。
下面的代码段初始化了你的常量:textarea, counter和number。number
使用内置Number函数类型转换为int类型。然后在textarea输入上设置本地变量current
以保存公式的结果:maxchars(number) - inputchars(textarea)
.
counter
与current
更新,最后我使用三进制设置counter
颜色为红色,如果0否则为黑色。
const textArea = document.getElementById('textarea');
const counter = document.getElementById('counter');
const number = Number(counter.innerHTML);
textArea.oninput = function() {
const current = number - textArea.value.length;
counter.innerHTML = current;
counter.style.color = current === 0 ? "red" : "black";
return;
};