当前位置:网站首页>标签属性disabled selected checked等布尔类型赋值不生效?
标签属性disabled selected checked等布尔类型赋值不生效?
2022-07-02 06:10:00 【可缺不可滥】
原生html
设置了false实际是true
<select>
<option>1</option>
<option>2</option>
<option selected>3</option>
<option selected=false>4</option>
</select>
以上的代码实际上select默认选中4
其实无论你让selected=0 selected=false selected=none 等等,这里都被认为是设置为true
因为在原生的html中,所有属性的赋值其实都是一个字符串,对布尔属性赋值字符串,会被强制转化为布尔值,所以"false" =>true “0” => true …
所以从某种意义上,我们只有利用js或者jquery对其进行赋予布尔值
这样被默认选中的是第4个
<select>
<option>1</option>
<option>2</option>
<option selected>3</option>
<option id="option4">4</option>
</select>
var option4 = document.getElementById("option4")
option4.selected = true
react中布尔值属性只能设置为布尔值
设置false被认为无效,默认选择3
<select>
<option>1</option>
<option>2</option>
<option selected>3</option>
<option selected={
false}>4</option>
</select>
设置undefined实际上就是false,最终默认选择3
<select>
<option>1</option>
<option>2</option>
<option selected>3</option>
<option selected={
undefined}>4</option>
</select>
当然也可以设置表达式来判断,默认选择4
import React, {
useState } from "react";
import {
Link } from "react-router-dom";
const Login: React.FC = () => {
const [options, setOptions] = useState([1, 2, 3, 4])
return (
<div>
<Link to="/home">Home</Link>
<select>
{
options.map((item) => {
return <option key={
item} selected={
item === 4} >
{
item}
</option>
})
}
</select>
</div>
);
}
export default Login;
但是这样可能会报一个警告 react-dom.development.js:86 Warning: Use the defaultValue or value props on instead of setting selected on .
意思就是让你直接在select标签设置value或者defaultValue而不是给option设置selected
这样默认选中的就是2
import React, {
useState } from "react";
import {
Link } from "react-router-dom";
const Login: React.FC = () => {
const [options, setOptions] = useState([1, 2, 3, 4])
return (
<div>
<Link to="/home">Home</Link>
<select value={
2}>
{
options.map((item) => {
return <option key={
item} >
{
item}
</option>
})
}
</select>
</div>
);
}
export default Login;
react中其它布尔属性是否与selected的表现一致
只有第4个input被禁用
import React, {
useState } from "react";
import {
Link } from "react-router-dom";
const Login: React.FC = () => {
const [options, setOptions] = useState([1, 2, 3, 4])
return (
<div>
<Link to="/home">Home</Link>
{
options.map((item) => {
return <input key={
item} disabled={
item === 4} />
})
}
</div>
);
}
export default Login;
只有第4个checkbox被选中
import React, {
useState } from "react";
import {
Link } from "react-router-dom";
const Login: React.FC = () => {
const [options, setOptions] = useState([1, 2, 3, 4])
return (
<div>
<Link to="/home">Home</Link>
{
options.map((item) => {
return <input type="checkbox" key={
item} checked={
item === 4} />
})
}
</div>
);
}
export default Login;
所有的input都不是read模式,可以正常输入
import React, {
useState } from "react";
import {
Link } from "react-router-dom";
const Login: React.FC = () => {
const [options, setOptions] = useState([1, 2, 3, 4])
return (
<div>
<Link to="/home">Home</Link>
{
options.map((item) => {
return <input key={
item} readOnly={
false} />
})
}
</div>
);
}
export default Login;
经过多种布尔值的测试,react中布尔值属性表现保持一致
vue中设置布尔属性
单独设置为false,其实为true。实际上默认选中的是3
<select>
<option value="1">1</option>
<option value="2">2</option>
<option value="3" selected>3</option>
<option value="4" :selected="false">4</option>
</select>
如果通过data属性的方式,可以实现false的传值,默认选中的是3
<select>
<option value="1">1</option>
<option value="2">2</option>
<option value="3" selected>3</option>
<option value="4" :selected="selected1">4</option>
</select>
export default class Home extends Vue {
selected1 = false
}
</script>
当然判断式也是可以的,一般选择===的方式判断,默认选中第2个
<select>
<option v-for="item in options" :key="item" value="item" :selected="item === 2">
{
{
item }}
</option>
</select>
export default class Home extends Vue {
options = [1, 2, 3, 4]
}
</script>
vue其它的布尔值属性与selected一致吗?
只有第二个input被禁用了
<input v-for="item in options" :key="item" value="item" :disabled="item === 2" />
export default class Home extends Vue {
options = [1, 2, 3, 4]
}
全部false生效 都没被禁用
<input v-for="item in options" :key="item" value="item" :disabled="false" />
全部true生效 都被禁用
<input v-for="item in options" :key="item" value="item" :disabled="true" />
checked disabled readonly 基本所有的布尔类型表现都是如此
边栏推荐
- 从设计交付到开发,轻松畅快高效率!
- Frequently asked questions about jetpack compose and material you
- [C language] screening method for prime numbers
- Shenji Bailian 3.53-kruskal
- 492. Construction rectangle
- Contest3147 - game 38 of 2021 Freshmen's personal training match_ E: Listen to songs and know music
- In depth understanding of JUC concurrency (I) what is JUC
- AttributeError: ‘str‘ object has no attribute ‘decode‘
- Redis key value database [seckill]
- Current situation analysis of Devops and noops
猜你喜欢

Let every developer use machine learning technology

网络相关知识(硬件工程师)

Unity shader learning notes (3) URP rendering pipeline shaded PBR shader template (ASE optimized version)

Community theory | kotlin flow's principle and design philosophy

Leverage Google cloud infrastructure and landing area to build enterprise level cloud native excellent operation capability

Deep learning classification network -- Network in network
![[C language] simple implementation of mine sweeping game](/img/f7/15d561b3c329847971cabd4708c851.png)
[C language] simple implementation of mine sweeping game

来自读者们的 I/O 观后感|有奖征集获奖名单

ROS create workspace

Zhuanzhuanben - LAN construction - Notes
随机推荐
深入学习JVM底层(五):类加载机制
500. Keyboard line
Shenji Bailian 3.52-prim
Spark overview
LeetCode 78. 子集
STC8H8K系列汇编和C51实战——按键允许按键计数(利用下降沿中断控制)
Mock simulate the background return data with mockjs
经典文献阅读之--Deformable DETR
Comment utiliser mitmproxy
让每一位开发者皆可使用机器学习技术
LeetCode 78. subset
LeetCode 83. 删除排序链表中的重复元素
The difference between session and cookies
From design delivery to development, easy and efficient!
Web components series (VIII) -- custom component style settings
Web page user step-by-step operation guide plug-in driver js
LeetCode 39. Combined sum
STC8H8K系列匯編和C51實戰——數碼管顯示ADC、按鍵串口回複按鍵號與ADC數值
LeetCode 77. 组合
JWT tool class