2013-03-26 57 views
0

你好我有這段代碼來改變一個段落的字體大小與3個按鈕,我想知道至極方法我可以使用不重複相同的行,並使此代碼更緊湊謝謝你很多:)用javascript更改字體大小

window.addEventListener('load', inicio, false); 

function inicio(){ 
var boton1 = document.getElementById('boton1'); 
var boton2 = document.getElementById('boton2'); 
var boton3 = document.getElementById('boton3'); 

boton1.addEventListener('click', fuente10, false); 
boton2.addEventListener('click', fuente13, false); 
boton3.addEventListener('click', fuente20, false); 
} 

function fuente10(){ 
var parrafo = document.getElementById('parrafo'); 
parrafo.style.fontSize='10px' 
} 

function fuente13(){ 
var parrafo = document.getElementById('parrafo'); 
parrafo.style.fontSize='13px' 
} 

function fuente20(){ 
var parrafo = document.getElementById('parrafo'); 
parrafo.style.fontSize='20px' 
} 

我在想for循環,但我不能弄清楚如何做到這一點:/

+0

爲什麼不使用jQuery?使用jQuery來實現這一點太容易了! – 2013-03-26 05:26:14

+0

@RutwickGangurde - jQuery不需要做這個基本的事情。 – 2013-03-26 05:28:26

+0

即時通訊只是試圖完全理解JavaScript來得到更好的編程,只是學習:) – 2013-03-26 05:29:07

回答

3

嘗試像這樣的

window.addEventListener('load', inicio, false); 

function inicio(){ 
var boton1 = document.getElementById('boton1'); 
var boton2 = document.getElementById('boton2'); 
var boton3 = document.getElementById('boton3'); 

boton1.addEventListener('click', function() { setFont("10px");}, false); 
boton2.addEventListener('click', function() { setFont("13px");}, false); 
boton3.addEventListener('click', function() { setFont("20px");}, false); 
} 

function setFont(value){ 
    var parrafo = document.getElementById('parrafo'); 
    parrafo.style.fontSize= value; 
} 

更新 不同的計算策略(未測試,但應工作)

window.addEventListener('load', inicio, false); 
function inicio() { 
    var fontDetails = {"boton1" : "10px" , "boton2" : "13px" , "boton3" : "20px"}; 
    var parrafo = document.getElementById('parrafo'); 
    var domElement = ""; 
    var element = ""; 

    for (element in fontDetails) 
    { 
     domElement = document.getElementById(element); 
     domElement.addEventListener('click', function() { parrafo.style.fontSize= fontDetails[element]; }, false); 
    } 
} 

您也可以刪除窗口加載事件處理程序和功能INICIO並嘗試自我執行這樣

功能
(function() { //your code here })(); 
+0

這個工作真的很好,使匿名函數調用setFont函數並不壞? – 2013-03-26 05:40:24

+0

沒有問題AFAIK,我們可以這樣打電話。 – kiranvj 2013-03-26 05:43:48

+0

謝謝,這是一個很好的解決方案:) – 2013-03-26 05:47:46

1

也許這種變化可以幫助你:

window.addEventListener('load', inicio, false); 

    var boton; 

    function inicio() 
    { 
     modificar('boton1', 10); 
     modificar('boton2', 13); 
     modificar('boton3', 20); 
    } 

    function modificar(id, size) 
    { 
     boton = document.getElementById(id); 
     boton.onclick=function(){fuente(size)}; 
     console.log(boton); 
    } 

    function fuente(size) 
    { 
     var parrafo = document.getElementById('parrafo'); 
     parrafo.style.fontSize=size+'px'; 
    } 
+0

這ddnt爲我工作,它似乎是當窗口加載它自動設置的大小20以段的段落,並且按鈕不工作:/ – 2013-03-26 05:39:12

+0

我做了一些更改。現在有用! =) – Superlandero 2013-03-26 06:13:48

+0

現在它的作品非常感謝你的幫助! – 2013-03-26 14:08:06