前端小测----DOM测试38

2023-10-29 03:59

本文主要是介绍前端小测----DOM测试38,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

得分 

我得了2分,难受,明明感觉是3分的 哈哈

分析

其实这个题目就是对伪类进行了一定考察,我太菜了,呜呜呜

第一问获取所有匹配required必选的单选框元素

我的答案

var requiredInputAll = document.querySelectorAll("input[type='radio'][required]")

正解

let disabledArr = document.querySelectorAll('[type="radio"]:required');

为什么?

  • 首先input确实是不用加的因为type='radio'属性就已经可以了
  • :required伪类选择器,IE10+支持。和[required]属性选择器的区别,暂时还没找到,找到补充

第二问:获取所有匹配display禁用态的单选框元素

我的答案:其实我当时写的时候是不找到还可以有伪类这个东西的

    var disabledInputAll = []var disabledInputPart_1 = document.querySelectorAll("input[disabled]")var disabledInputAll = [...disabledInputPart_1]var disabledFieldsetInput = document.querySelectorAll("fieldset[disabled]")// console.log([].slice.call(disabledFieldsetInput)[0])Array.from(disabledFieldsetInput).forEach(item => {Array.from(item.querySelectorAll("input[type='radio']")).forEach(item => {if (!disabledInputAll.includes(item)) {disabledInputAll.push(item)}})})

正解:简单粗暴明了

let disabledArr = document.querySelectorAll('[type="radio"]:disabled');

为什么?

因为fieldset标签类的表达元素会继承fieldset的属性,所以当<fieldset>设置了disabled的时候他的子元素都会被设置

总结::disabled伪类,IE9+支持。和[disabled]属性选择器的区别,有些表单元素本身没有[disabled]属性,但是,自身是处于应用态的。这就是:disabled伪类设计的原因之一

第三问:获取所有checked选中态的单选框元素

我的答案

var checkedInputAll = document.querySelectorAll('input[checked]')

正确答案

var checkedInputAll1 = document.querySelectorAll('input:checked')

为什么?

:checked伪类,IE9+支持。和[checked]属性选择器的区别,有些单复选框虽然有[checked]属性,但是本身并不是选中态。这就是:checked伪类设计的原因之一

HTML:单选框name相同只可以选择一个,但是当我们写了2个后

<input type="radio" value="ba1" name="bookAuthor" checked>宅猪
<input type="radio" value="ba2" name="bookAuthor">西红柿
<input type="radio" value="ba3" name="bookAuthor" checked>莫默

JS

    var checkedInputAll = document.querySelectorAll('input[checked]')var checkedInputAll1 = document.querySelectorAll('input:checked')console.log(checkedInputAll.length, 'checkedInputAll--------------------') // 2console.log(checkedInputAll1.length, 'checkedInputAll--------------------') // 1

看输出结果是不一样的,所以我的分啊

第四问:获取ID为removeDisabled的按钮元素, 点击改按钮移除所有单选框元素的disabled禁用效果

我的答案:这个题目我应该是对了,但是就是谢的好像有点捞

    var removeDisabled = document.getElementById('removeDisabled')disabledInputPart_1.forEach(item => {item.removeAttribute('disabled')})disabledFieldsetInput.forEach(item => {item.removeAttribute('disabled')})

大佬的写法(我真的太菜了,其实意思是一样的)

// 这个是第二问的答案
const radiolist2 = document.querySelectorAll('[type=radio]:disabled');
// 第四问
const btn = document.querySelector('#removeDisabled');
btn.addEventListener('click',()=>{[...radiolist2].forEach(el=>{const fieldset = el.closest('fieldset:disabled');if (fieldset) {fieldset.disabled = false;}if (el.disabled) {el.disabled = false;}});
})

为什么?

Element.closest() 方法用来获取:匹配特定选择器且离当前元素最近的祖先元素(也可以是当前元素本身)。如果匹配不到,则返回 null

第五问

答案

    [type=radio]:invalid {outline: 3px dashed red;}

最优正解

    [type=radio]:invalid {outline: dashed red;}

为什么?

  • :invalid CSS 伪类 表示任意内容未通过验证的 <input> 或其他 <form> 元素
  • outline:的默认大小为3px

这篇关于前端小测----DOM测试38的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/298128

相关文章

CSS3中使用flex和grid实现等高元素布局的示例代码

《CSS3中使用flex和grid实现等高元素布局的示例代码》:本文主要介绍了使用CSS3中的Flexbox和Grid布局实现等高元素布局的方法,通过简单的两列实现、每行放置3列以及全部代码的展示,展示了这两种布局方式的实现细节和效果,详细内容请阅读本文,希望能对你有所帮助... 过往的实现方法是使用浮动加

css渐变色背景|<gradient示例详解

《css渐变色背景|<gradient示例详解》CSS渐变是一种从一种颜色平滑过渡到另一种颜色的效果,可以作为元素的背景,它包括线性渐变、径向渐变和锥形渐变,本文介绍css渐变色背景|<gradien... 使用渐变色作为背景可以直接将渐China编程变色用作元素的背景,可以看做是一种特殊的背景图片。(是作为背

CSS自定义浏览器滚动条样式完整代码

《CSS自定义浏览器滚动条样式完整代码》:本文主要介绍了如何使用CSS自定义浏览器滚动条的样式,包括隐藏滚动条的角落、设置滚动条的基本样式、轨道样式和滑块样式,并提供了完整的CSS代码示例,通过这些技巧,你可以为你的网站添加个性化的滚动条样式,从而提升用户体验,详细内容请阅读本文,希望能对你有所帮助...

css实现图片旋转功能

《css实现图片旋转功能》:本文主要介绍了四种CSS变换效果:图片旋转90度、水平翻转、垂直翻转,并附带了相应的代码示例,详细内容请阅读本文,希望能对你有所帮助... 一 css实现图片旋转90度.icon{ -moz-transform:rotate(-90deg); -webkit-transfo

vue基于ElementUI动态设置表格高度的3种方法

《vue基于ElementUI动态设置表格高度的3种方法》ElementUI+vue动态设置表格高度的几种方法,抛砖引玉,还有其它方法动态设置表格高度,大家可以开动脑筋... 方法一、css + js的形式这个方法需要在表格外层设置一个div,原理是将表格的高度设置成外层div的高度,所以外层的div需要

Vue项目中Element UI组件未注册的问题原因及解决方法

《Vue项目中ElementUI组件未注册的问题原因及解决方法》在Vue项目中使用ElementUI组件库时,开发者可能会遇到一些常见问题,例如组件未正确注册导致的警告或错误,本文将详细探讨这些问题... 目录引言一、问题背景1.1 错误信息分析1.2 问题原因二、解决方法2.1 全局引入 Element

详解如何在React中执行条件渲染

《详解如何在React中执行条件渲染》在现代Web开发中,React作为一种流行的JavaScript库,为开发者提供了一种高效构建用户界面的方式,条件渲染是React中的一个关键概念,本文将深入探讨... 目录引言什么是条件渲染?基础示例使用逻辑与运算符(&&)使用条件语句列表中的条件渲染总结引言在现代

详解Vue如何使用xlsx库导出Excel文件

《详解Vue如何使用xlsx库导出Excel文件》第三方库xlsx提供了强大的功能来处理Excel文件,它可以简化导出Excel文件这个过程,本文将为大家详细介绍一下它的具体使用,需要的小伙伴可以了解... 目录1. 安装依赖2. 创建vue组件3. 解释代码在Vue.js项目中导出Excel文件,使用第三

Java实现Excel与HTML互转

《Java实现Excel与HTML互转》Excel是一种电子表格格式,而HTM则是一种用于创建网页的标记语言,虽然两者在用途上存在差异,但有时我们需要将数据从一种格式转换为另一种格式,下面我们就来看看... Excel是一种电子表格格式,广泛用于数据处理和分析,而HTM则是一种用于创建网页的标记语言。虽然两

vue解决子组件样式覆盖问题scoped deep

《vue解决子组件样式覆盖问题scopeddeep》文章主要介绍了在Vue项目中处理全局样式和局部样式的方法,包括使用scoped属性和深度选择器(/deep/)来覆盖子组件的样式,作者建议所有组件... 目录前言scoped分析deep分析使用总结所有组件必须加scoped父组件覆盖子组件使用deep前言