值严格相等的问题

Values strictly equal problems

我是编码新手,我正在为我必须编写的代码评分。 评分员非常挑剔,所以我对此有疑问,所以顺序很重要,而现实世界中的东西并不重要。但仍然存在一些问题。 我从 Javascript 创建了一个键盘,方法是创建按钮,为它们分配 innerText,一个 ID 并将它们一个接一个地放置。 这是我的代码。

let G4 = document.createElement ('button');
let sibemol = document.createElement ('button');
let C5 = document.createElement ('button');
let D5 = document.createElement ('button');
let F5 = document.createElement ('button');
let G5 = document.createElement ('button');

G4.innerHTML = '<button id="G4">G4</button>';
sibemol.innerHTML = '<button id="A#4">Bb4</button>';
C5.innerHTML = '<button id="C5">C5</button>';
D5.innerHTML = '<button id="D5">D5</button>';
F5.innerHTML = '<button id="F5">F5</button>';
G5.innerHTML = '<button id="G5">G5</button>';

G4.setAttribute('id', 'G4');
sibemol.setAttribute('id', 'A#4');
C5.setAttribute('id', 'C5');
D5.setAttribute('id', 'D5');
F5.setAttribute('id', 'F5');
G5.setAttribute('id', 'G5');

let keyboard = document.getElementById('simple-keyboard');
keyboard.appendChild(G4);
keyboard.appendChild(sibemol);
keyboard.appendChild(C5);
keyboard.appendChild(D5);
keyboard.appendChild(F5);
keyboard.appendChild(G5);

我遇到的问题是,for start 那 "I should have 6 buttons" 并且它正在数我,因为我有 12 个,为什么它会加倍计数,我该如何做到这一点,我在这里尝试通过逐行发布(我有一个按钮一个按钮的所有信息,但发现我必须按照他们想要的顺序写台词,显然-ik,这很糟糕。 然后,我有那个 "button should have innerText Bb4 or A#4",我有这个消息: 表达式的计算结果为假值:assert(note.indexOf(text) >= 0)

为什么会这样...我已经有了那个内部文本,所以我不知道是什么问题。

然后程序就继续携带这些消息,就好像事情的顺序是错误的,在我之前提到的两条消息之后: ⨯ 3. 按钮应该有 id 属性 C5 (3p) 期望值严格相等:'A#4' !== 'C5'

看起来,在我不解决 Bb4 问题之前,我不会检查其余代码 - 而且我只有 5 个可能的提交可以使用...

谢谢!

现在,您正在为每个按钮在按钮内创建一个按钮:

let C5 = document.createElement ('button');
C5.innerHTML = '<button id="C5">C5</button>';

这就像创造一些东西

<button><button id="C5">C5</button></button>

这就是导致问题的原因。

而是分配给您创建的按钮的 idtextContent 属性:

sibemol.id = 'A#4'; // you're already doing this with setAttribute below
sibemol.textContent = 'Bb4';
C5.id = 'C5';
C5.textContent = 'C5';
D5.id = 'D5';
D5.textContent = 'D5';
// etc

(不需要setAttribute,太冗长了)

或者,重复次数较少,如果 ID 与 textContent 匹配:

const keys = ['G4', 'Bb4', 'C5', 'D5', 'F5', 'G5'];
for (const key of keys) {
  const button = keyboard.appendChild(document.createElement('button'));
  button.id = key;
  button.textContent = key;
}