Как отключить флажок в java-скрипте в зависимости от бита переменной?

0

скрипт и в настоящее время обрабатывает код в 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 флажки должны быть серыми....

  • 1
    Сдвиг вправо и проверка номера на четность или нечетность. Однако возникает другая мысль: почему бы вам не создать класс, в котором каждое свойство представляет флажок? Это повысит читабельность вашего кода.
Теги:

3 ответа

2

Сначала преобразуйте свой номер в двоичную строку с .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
      }
 }
  • 0
    Я использую язык Си.
  • 0
    поэтому задайте другой вопрос и пометьте его как C а не как javascript
Показать ещё 1 комментарий
1

Это устанавливает, включены ли флажки на основе битов 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).

  • 0
    Как запустить это ... не в состоянии запустить это?
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);
   }
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню