如何用JavaScript改变一个段落的字体大小
How to change font size of a paragraph with JavaScript
我正在学习JavaScript,我正试图改变一个网站中有3个按钮的段落的字体大小。当我在写代码时,控制台输出这个错误,我不知道它是什么。我还想知道我编码的方式是否正确?
html代码:
<!DOCTYPE html>
<html leng="es">
<head>
<meta charset="UTF-8">
<title>Mi ejercicio DHTML</title>
<link rel="stylesheet" type="text/css" href="css/estilos.css">
<script type="text/javascript" src="js/codigo.js"></script>
</head>
<body>
<p id="parrafo">
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to.
</p>
<span class="boton" id="boton1">Fuente pequeña</span>
<span class="boton" id="boton2">Fuente mediana</span>
<span class="boton" id="boton3">Fuente grande</span>
</body>
</html>
CSS: p {
font-size: 13px;
margin-bottom: 2em;
}
.boton {
background: red;
padding: .5em 1em;
}
JavaScript: window.addEventListener('load', inicio, false);
function inicio() {
var indice = [1, 2, 3];
for (var i = 0; i < indice.length; i++) {
var boton = document.getElementById('boton' + indice[i]);
boton.addEventListener('click', cambiarFuente, false);
};
}
function cambiarFuente() {
console.log('hola');
}
和最后的错误:
未捕获的TypeError: Cannot call method 'addEventListener' of null codigo.js:6
我把<script>
标签放在</body>
之前,现在它的工作;至少我是这么想的。另一个问题出现了,它的段落没有改变它的字体大小,但我仍然收到控制台日志消息,如果它的工作:
window.addEventListener('load', inicio, false);
function inicio(){
var indice =[1,2,3];
for (var i = 0; i < indice.length; i++) {
var boton = document.getElementById('boton' + indice[i]);
boton.addEventListener('click', cambiarFuente, false);
};
function cambiarFuente(){
var parrafo = document.getElementById('parrafo');
parrafo.style.fontSize=20;
console.log('hola');
}
}
我也不知道如何为每个按钮分配不同的字体大小!谁能给我点建议吗?
当文档。getElementById返回null,这意味着它没有找到具有提供ID的元素。在本例中,这是因为在加载页面之前脚本正在运行。
在加载事件之后调用函数:
window.onload = function() {
// stuff to run onload
};
一个额外的预防措施是在尝试调用方法之前检查getElementById是否返回一个元素(或者至少不是null)。
编辑
此外,正如Mahesh Sapkal指出的那样,IE小于8(也许是9?)不支持addEventListener
,您必须使用attachEvent
。有许多"addEvent"函数基于特征检测使用其中一个或另一个,这里有一个简单的:
function addListener(element, event, fn) {
// Use addEventListener if available
if (element.addEventListener) {
element.addEventListener(event, fn, false);
// Otherwise use attachEvent, set this and event
} else if (element.attachEvent) {
element.attachEvent('on' + event, (function (el) {
return function() {
fn.call(el, window.event);
};
}(element)));
// Break closure and primary circular reference to element
element = null;
}
}
,循环变成:
var boton;
for (var i = 0; i < indice.length; i++) {
boton = document.getElementById('boton' + indice[i]);
if (boton) {
addListener(boton, 'click', cambiarFuente);
}
}
注意if块后面没有分号,它不是一个语句(尽管它通常包含语句)。
你可以用这种方式代替:
window.addEventListener('load', inicio, false);
使用:
$(document).ready(function(){
inicio();
});
在函数中:
function inicio(){
var indice =[1,2,3];
for (var i = 0; i < indice.length; i++) {
var boton = $('#boton' + indice[i]);
boton.click(function(){
cambiarFuente();
});
}
}
你的脚本没有工作的原因是,你甚至在文档加载之前执行脚本。一个简单的修复将把您的<script></script>
放在</body>
之前,它可以工作。
相关文章:
- 谷歌应用程序脚本:如何修复循环将一个谷歌文档的段落插入另一个
- 将数组中的数据作为段落添加到一个文本区域
- 添加一个“;关闭“;按钮展开折叠段落
- 从数组列表中随机选择一个段落 Javascript
- 将所有段落合并为一个段落
- 分开一个段落列表,给每个单词单独的CSS
- 在CodeMirror中查找自定义语言模式的段落的第一个单词和最后一个单词
- Javascript:如何找到在长段落中选择了特定文本的哪个实例(例如,一个单词在一段中出现多次)
- 启用段落的背景色<p>当有一个带有CSS的引导按钮时
- 在jquery中,我如何检测一个段落是否包含一个链接,并且只有一个链接而没有其他链接
- 合并两个段落并删除中间的一个元素
- 您将如何构建一个正则表达式,将段落拆分为句子,但不拆分<>内的任何标点符号
- 选择一个JavaScript段落(点击)
- 如何在一个段落中放置不同的用户输入
- 统计jquery中一个区分大小写的单词在一个段落中出现的次数
- 段落中有一个'不应该出现的空格
- 列出一个HTML段落< >在一个时间效应
- 在PHP中插入一个jQuery段落'If'声明
- 如何选择一个词或段落在html没有id
- 如何将一个HTML段落元素的文本值传递给另一个HTML段落元素