скрипт и в настоящее время обрабатывает код в HTMl.
Вот проблема:
У меня на моей веб-странице около 32 флажков, теперь, когда моя страница полностью загружается, мне нужно отключить флажки на основе некоторой переменной say dis.
дис = 15;
В двоичной форме это будет 00001111, поэтому, основываясь на информации о битах, мне нужно сделать мои флажки включенными и отключенными.
Любая логика или способ сделать в JS будет заметна.
<html>
<head>
<title>checkboxes Enable</title>
</head>
<script type="text/JavaScript">
function(value) {
}
</script>
<body onload="function()">
</body>
</html>
Подумайте, что я передаю value = 8 функции, поэтому на этой основе мне нужно включить флажки с именем "checkbox1", "checkbox2"....... "checkbox32". 8 в двоичном формате 00001000.... следовательно, 4-й "checkbox4" должен быть включен, а остальные 31 флажки должны быть серыми....
Сначала преобразуйте свой номер в двоичную строку с .toString(2)
var dis = 15;
var binaryDis = dis.toString(2);
после этого перебираем строку, которая преобразуется в двоичную; для включения или отключения флажков:
for(var i = 0 ;i < binaryDis.length;i++)
{
if(binaryDis[i]==="0")
{
//disable your relevant checkbox
}
else
{
//enable your relevant checkbox
}
}
C
а не как javascript
Это устанавливает, включены ли флажки на основе битов 32-разрядного номера. В настоящее время он настроен на выполнение 15 при загрузке страницы. Примечание: использует JQuery.
<html>
<head>
<title>binary checkboxes</title>
</head>
<script src="jquery.js"></script>
<script type="text/JavaScript">
$(function() {
for(var i=0;i<32;i++) {
$('body').append('<input type="checkbox" name="chk'+(31-i)+'" id="chk'+(31-i)+'"/>');
}
setboxes(15);
});
function setboxes(x) {
for(var i=0;i<32;i++) {
$('#chk'+i).prop('disabled',x%2===0);
x>>=1;
}
}
</script>
<body>
</body>
</html>
Он работает путем многократного смещения битов числа вправо, а затем проверки наличия четного числа (если последний бит равен 0).
Вы могли бы просто использовать bitwise- и вот так:
function isCheckboxEnabled(dis, checkboxIndex) {
return dis & Math.pow(10, checkboxIndex) > 0;
}
Как это работает?
Он добавляет ваше dis-value и двоичную маску.
15|10 => 01111|2
Если теперь вы хотите узнать, равна ли первая цифра (правая рука) 1 или 0, выполните следующие действия:
01111
& 00001
-------
00001 => 1
для второго:
01111
& 00010
-------
00010 => 4
Чтобы включить/отключить свои флажки, используйте следующее:
Преобразуйте вас в двоичный:
var dis = 15;
var binaryDis = dis.toString(2);
Включить/отключить флажок
for (var i = 0; i < binaryDis.length; i++)
{
if (isCheckboxEnabled(dis, i)) {
enableCheckbox(i);
} else {
disableCheckbox(i);
}
}