Im la programmation d'une calculatrice et Im essayant que tous les boutons dans la même colonne ont la même largeur. Pour cela Im Im utilisant jQuery (Je le fais de cette façon parce que j'ai un examen dans quelques jours et je veux pratiquer).Tous les boutons ont la même largeur - jQuery
Mon code HTML:
<html>
<head>
<meta charset="UTF-8">
<title>CORE2017 P3</title>
<script type="text/javascript" src="https://code.jquery.com/jquery-2.1.4.min.js"></script>
<script type="text/javascript" src="calculadora.js"></script>
<link href="calculadora.css" rel="stylesheet" type="text/css" media="all">
</head>
<body onload="igualarBotones()">
<header>
<p>Calculator</p>
</header>
<section id="main">
<p>
Número: <input type="text" id="pantalla"> <button id="Limpiar">Limpiar</button>
</p>
<p>
<button id="suma" class="columna1">+</button>
<button id="resta" class="columna2">-</button>
<button id="cuadrado" class="columna3">x<sup>2</sup></button>
</p>
<p>
<button id="inverso" class="columna1">1/x</button>
<button id="raiz" class="columna2">sqrt(x)</button>
<button id="pentera" class="columna3">parte_entera(x)</button>
</p>
<p>
<button id="potencia2" class="columna1">2<sup>x</sup></button>
<button id="factorial" class="columna2">x!</button>
<button id="igual" class="columna3">=</button>
</p>
</section>
</body>
</html>
Code Mon JavaScript:
$(function() {
function igualarBotones(){
var columna1 = $(".columna1");
setMax(columna1);
var columna2 = $(".columna2");
setMax(columna2);
var columna3 = $(".columna3");
setMax(columna3);
}
function setMax(columna){
var maxColumna = -1;
for(i=0; i<columna.length; i++){
if(columna[i].css("width") > maxColumna){
maxColumna = columna[i].css("width");
}
}
for(i=0; i<columna.length; i++){
columna[i].css("width",maxColumna);
}
}
});
Tout le monde sait pourquoi il nest pas travailler?
EDIT: J'ai utilisé $(columna[i]).css
au lieu de columna[i].css
et cela a fonctionné. Cependant, je ne parviens pas à ce que ma fonction igualarBotones()
soit définie lors du chargement du corps, je pense que cela doit être quelque chose lié à la façon dont j'ai nommé ou écrit la fonction. Si j'écris le Javascript ainsi:
$(function() {
var columna1 = $(".columna1");
setMax(columna1);
var columna2 = $(".columna2");
setMax(columna2);
var columna3 = $(".columna3");
setMax(columna3);
function setMax(columna){
var maxColumna = -1;
for(i=0; i<columna.length; i++){
if(parseFloat($(columna[i]).css("width")) > parseFloat(maxColumna)){
maxColumna = $(columna[i]).css("width");
}
}
columna.css("width",maxColumna);
}
});
cela fonctionne, mais je veux le faire avec une fonction igualarBotones()
qui est chargé avec le corps. Une idée de ce que je fais mal?
Merci à tous, Luis.
Utilisez FlexBox ... css pas besoin de script pour le faire – charlietfl
je sais, mais je veux la pratique jQuery et ce fut une façon Je pourrais tester jQuery. Méthode css(). Pourrait-il être fait comme je l'ai montré sur le post? – Luiscri
Je suggère d'utiliser CSS pour cela, le problème dans votre code est que vous êtes en boucle la façon non-jquery .. votre logique devrait fonctionner si vous avez utilisé $ (columna [i]) 'au lieu de' columna [i] '- si vous allez sur la route jquery - je suggère fortement d'utiliser la fonction' .each' –