`

js、css可能出现的一个问题:【js得到已设置属性为空】

阅读更多

        最近在做一些js实例应用,发现了一个奇怪的问题。下面是过程:

①按钮:

②点击后

--------------------------------------------------------------

这个在我看来非常容易,于是我很快就写好了:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<style>
*{margin:0; padding:0;}
#outer{ margin:50px auto; width:70px;}
#button1{ padding:5px 8px; cursor:pointer;}
#inner{ border:1px solid blue; border-radius:5px; display:none; font-family:"新宋体"; font-size: 
12px;}
#inner li{ padding:5px 8px; border-bottom:1px solid blue; list-style-type:none; display:inline-block; 

cursor:pointer; vertical-align:top; width:52px;}
#inner li.last{border-bottom:0px;}
#inner li a{text-decoration:none;}
#inner li:hover{background:#afafaf;}
</style>
<script>
window.onload = function ()
{
	oButton=document.getElementById("button1");//按钮
	oAppend=document.getElementById("inner");//按钮下的蓝色边框区域。
	oButton.onclick=function()
	{
		switchState();
	}
	
	var oClose=document.getElementById("last");
	oClose.onclick=function()
	{
		switchState();	
	}
}
var oButton;
var oAppend;

var switchState = function()//①当蓝色区域未显示时使其显示、②当蓝色区域显示时使其消失。
{
	//alert("PRE: [display] = "+oAppend.style["display"]);
	oAppend.style["display"]= (oAppend.style["display"] == "none"?"block":"none");
	//alert("NOW: [display] = "+oAppend.style["display"]);
}
</script>
<body>
<div id="outer">
	<button id="button1">输入法</button>
	<ul id="inner">
		<li><a href="javascript:void(0);">拼音</a></li>
		<li><a href="javascript:void(0);">字母</a></li>
		<li id="last"><a href="javascript:;">关闭</a></li>
	</ul>
</div>
</body>
</html>

 --------

可是,当我运行时却发现第一次点击按钮时,蓝色区域并不会弹出来,而后的点击才有效。这是为什么呢?

----于是在上述代码中我将【oAppend.style["display"](即蓝色区域的display属性)】输出,发现第一次点击时,程序运行到了switchState()方法。但是display属性为null。

-------

经过查询,原来外部样式表与内页样式的属性值虽然已经设置,但是js的方法不能直接得到已设置属性的值,即显示为null。而只能得到行内样式中的属性值。

------

解决方法:①将switchState()的判断顺序改变一下->

var switchState = function()
{
	//alert("PRE: [display] = "+oAppend.style["display"]);
	oAppend.style["display"]= (oAppend.style["display"] == "block"?"none":"block");
	//alert("NOW: [display] = "+oAppend.style["display"]);
}

这样第一次点击时就先判断显示,若未显示就将其显示。 

② 在对应元素的标签中嵌入【style="display:none"】

这样第一次点击时判断语句就能得到oAppend.style["display"]的值为【“none”】而不是【null】了。
 

 

  • 大小: 1.1 KB
  • 大小: 1.8 KB
分享到:
评论

相关推荐

    js与css样式对照

    通过以上表格可以看出,大部分CSS属性可以直接通过对应的JavaScript属性来获取或设置元素的样式。这些属性在JavaScript中通常采用驼峰式命名法(camelCase),即除了首字母外每个单词首字母大写。这种对照对于实现...

    Three.js前端3D开发:使用CSS3DRenderer渲染全景图

    在前端开发领域,Three.js 是一个非常流行的 JavaScript 库,用于创建和展示3D图形。在本主题中,我们将深入探讨如何使用 Three.js 的 CSS3DRenderer 来渲染全景图,这是一种将3D对象与CSS3变换相结合的技术,能够...

    Javascript和Css属性对照

    对象属性是定义在 JavaScript 对象上的键值对,例如,`person.name` 就是 `person` 对象的一个属性,用来存储名字。DOM 属性则是通过 JavaScript 访问 HTML 或 XML 文档元素的特性,如 `document.getElementById('...

    Node.js-objectify-css将CSS规则转成JavaScript样式对象的CLI工具

    3. 解析结果:转换后的 JavaScript 对象通常包含一个属性名为 CSS 类名,属性值为包含所有样式的对象。例如: ```javascript const styles = { '.myClass': { color: 'red', fontSize: '16px', display: '...

    CSS属性在Javascript中对应表

    在网页开发中,CSS(Cascading Style Sheets)和JavaScript是两种至关重要的技术。...此外,学习使用`getComputedStyle()`方法获取计算后的样式,以及`style.cssText`属性一次性设置多个样式也是十分重要的。

    CSS和JavaScript标签style属性对照表

    ### CSS与JavaScript中style属性对照表详解 #### 引言 在前端开发中,CSS(层叠样式表)和JavaScript是构建动态、交互式网页的关键技术。为了更好地控制页面元素的样式,开发者经常需要通过JavaScript来操作DOM...

    动态添加css或js链接

    当`isJS`为`false`时,该方法创建一个`&lt;link&gt;`标签,用于引入外部CSS文件。具体步骤如下: - 创建一个`HtmlGenericControl`实例,并将其标签名称设置为`"link"`。 - 使用`Attributes.Add`方法添加CSS文件的类型、...

    js+css3 3D波浪动画焦点图轮播切换特效

    而`js`文件夹则包含了实现轮播特效的JavaScript代码,可能包括一个或多个.js文件,这些文件可能包含了轮播逻辑和动画控制的函数。 总的来说,"js+css3 3D波浪动画焦点图轮播切换特效"是一个集成了JavaScript编程和...

    原生javascript实现css属性的set和get

    在JavaScript中,对CSS属性进行设置和获取是前端开发中常见的操作。原生JavaScript提供了DOM对象的style属性,可以用来直接操作元素的内联样式。本文将深入探讨如何使用原生JavaScript来实现CSS属性的set和get方法,...

    JS.css代码及教程

    JavaScript(简称JS)和CSS是Web开发中的两个关键技术,它们共同作用于网页的动态功能与样式呈现。本文将深入探讨这两者之间的交互,并提供一些关于如何在JS中操作CSS的教程要点。 **一、JavaScript简介** ...

    Javascript获取background属性中url的值

    在上述场景中,开发者遇到了一个问题,需要从CSS的`background-image`属性中提取出图片URL。`background-image`属性通常用于设置元素的背景图像,其值可以是一个URL,或者是多个值的组合,例如渐变或重复模式。在这...

    利用css+javascript实现的一个日期选择器代码

    【标题】:“利用css+javascript实现的一个日期选择器代码”涉及的核心知识点主要集中在CSS样式设计和JavaScript编程上,用于创建一个交互式的日期选择组件。日期选择器是网页表单中常见的一种元素,允许用户方便地...

    Javascript SlideShow网页相册代码(JS+CSS)

    在实际代码中,你可能会看到一个JavaScript文件(如`slideshow.js`),其中包含滑动相册的逻辑,以及一个或多个CSS文件(如`styles.css`),用于样式设定。JavaScript文件可能包括函数,用于初始化相册、处理用户...

    移除html元素的某个css属性

    当尝试通过JavaScript(通常使用jQuery或其他库)来移除一个HTML元素的CSS属性时,简单的将其值设置为空字符串(例如`element.style.property = ''`)并不总是能够完全移除该属性。这是因为: 1. **浏览器默认样式...

    JS和CSS和C++互相调用

    标题 "JS和CSS和C++互相调用" 涉及到的是三种不同的编程语言——JavaScript、CSS和C++在Web开发中的交互性问题。在现代Web开发中,这种跨语言交互是实现复杂功能和高性能应用的关键。让我们深入探讨一下这三者之间的...

    Html+Css+Javascript从入门到精通.pdf

    - **综合应用**:利用JavaScript制作一个功能完善的日历控件。 #### 第四部分:综合应用——建立你自己的网站 **第二十三章:建立你自己的网站** - **项目规划**:确定网站的目标和内容。 - **设计布局**:使用...

    制作一个简单HTML旅游网站(HTML+CSS+JS)无锡旅游网页设计与实现面.md

    通过以上知识点的学习和实践,学生可以掌握如何使用HTML5、CSS3和JavaScript构建一个具有基础交互功能的旅游网站。这些技能不仅适用于完成学业项目,也为未来从事前端开发工作打下了坚实的基础。

    js改变css样式

    JavaScript(简称JS)和CSS是Web开发中的两个关键技术,它们分别负责网页的交互逻辑与样式设计。在本文中,我们将深入探讨如何使用JavaScript来动态地改变CSS样式,以实现如标题所示的效果——通过页面JS事件改变...

    js+css3倒计时动画特效

    【标题】"js+css3倒计时动画特效"是一个结合了JavaScript和CSS3技术的网页倒计时组件,它为传统的倒计时功能增添了视觉吸引力。这种特效常见于活动预热、产品上线预告等场景,能吸引用户注意力并营造紧张期待的氛围...

Global site tag (gtag.js) - Google Analytics