Je veux obtenir la valeur mensuelle et annuelle de l’étiquette. Comment puis-je obtenir ces en utilisant jQuery?
<label year="2010" month="6" id="current Month"> June 2010</label>
Premièrement, je ne pense pas que les espaces pour un identifiant soient valides.
Donc, je changerais l'id pour ne pas inclure d'espaces.
<label year="2010" month="6" id="currentMonth"> June 2010</label>
alors le code jquery est simple (gardez à l’esprit, il vaut mieux aller chercher l’objet jquery une fois et l’utiliser encore et encore)
var label = $('#currentMonth');
var month = label.attr('month');
var year = label.attr('year');
var text = label.text();
Vous pouvez utiliser la méthode attr
. Par exemple, si vous avez un objet jQuery appelé label
, vous pouvez utiliser ce code:
console.log(label.attr("year")); // logs the year
console.log(label.attr("month")); // logs the month
Je change votre identifiant en current-month (n'ayant pas d'espace)
alert($('#current-month').attr('month'));
alert($('#current-month').attr('year'));
Utilisez .attr
$("current_month").attr("month")
$("current_month").attr("year")
Et changez l'identifiant des étiquettes en
<label year="2010" month="6" id="current_month"> June 2010</label>
Essaye ça:
var label = $('#currentMonth').text()
Bien que cette question soit plutôt ancienne et qu’elle ait reçu une réponse, j’ai pensé prendre le temps de proposer quelques options qui n’ont pas encore été abordées dans les autres réponses.
Étant donné le code HTML corrigé (camelCasing la valeur d'attribut id
) de:
<label year="2010" month="6" id="currentMonth"> June 2010</label>
Vous pouvez utiliser des expressions régulières pour extraire le nom du mois et l'année:
// gets the eleent with an id equal to 'currentMonth',
// retrieves its text-content,
// uses String.prototype.trim() to remove leading and trailing white-space:
var labelText = $('#currentMonth').text().trim(),
// finds the sequence of one, or more, letters (a-z, inclusive)
// at the start (^) of the string, and retrieves the first match from
// the array returned by the match() method:
month = labelText.match(/^[a-z]+/i)[0],
// finds the sequence of numbers (\d) of length 2-4 ({2,4}) characters,
// at the end ($) of the string:
year = labelText.match(/\d{2,4}$/)[0];
var labelText = $('#currentMonth').text().trim(),
month = labelText.match(/^[a-z]+/i)[0],
year = labelText.match(/\d{2,4}$/)[0];
console.log(month, year);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<label year="2010" month="6" id="currentMonth"> June 2010</label>
Cependant, au lieu d'expressions régulières, vous pouvez utiliser des attributs data-*
personnalisés (qui fonctionnent dans HTML 4.x, bien qu'ils soient invalides sous le doctype, mais qu'ils soient valides sous HTML 5):
var label = $('#currentMonth'),
month = label.data('month'),
year = label.data('year');
console.log(month, year);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<label data-year="2010" data-month="6" id="currentMonth"> June 2010</label>
Notez que ceci produira 6
(pour le data-month
), plutôt que 'June'
comme dans l'exemple précédent, bien que si vous utilisez un tableau pour lier des nombres à des noms de mois, cela peut être résolu facilement:
var monthNames = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
label = $('#currentMonth'),
month = monthNames[+label.data('month') - 1],
year = label.data('year');
console.log(month, year);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<label data-year="2010" data-month="6" id="currentMonth"> June 2010</label>
De même, ce qui précède pourrait être facilement transcrit dans le DOM natif (dans les navigateurs compatibles):
var monthNames = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
label = document.getElementById('currentMonth'),
month = monthNames[+label.dataset.month - 1],
year = label.dataset.year;
console.log(month, year);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<label data-year="2010" data-month="6" id="currentMonth"> June 2010</label>
Références:
data()
.var label = $('#current_month');
var month = label.val('month');
var year = label.val('year');
var text = label.text();
alert(text);
<label year="2010" month="6" id="current_month"> June 2010</label>