如何检查 `'` 和 ' 之间的相等性?
How do I check equality between `'` and '?
我是 Web 开发的新手,正在 AJAX 函数和 HTTP 请求中迈出我的第一步。
我只知道 vanilla JS,CSS 和 HTML。我对正则表达式也知之甚少,所以如果答案能尊重这一点,我将不胜感激。
我正在开发一个简单的问答游戏,我从 opentdb 中获取问答。数据保存在问题数组中,格式如下 (注意 correct-answer
上的 '
):
[..., {
category: "Entertainment: Film",
type: "multiple",
difficulty: "medium",
question: "What Queen song plays during the final fight scene of the film "Hardcore Henry"?",
correct_answer: "Don't Stop Me Now",
incorrect_answers: [
"Brighton Rock",
"Another Bites the Dust",
"We Will Rock You"
]
}, ...]
成功获取数据后,我做的第一件事就是将所有正确答案放入一个数组中,稍后我将使用该数组与用户选择的答案进行比较。在这个例子中,我的正确答案数组类似于 (再次注意 '
):
[... ,"Don't Stop Me Now", ...]
当我将问题和答案呈现给 DOM 时,通过创建必要的元素并使用 innerHTML,一切都在浏览器上显示良好(即,而不是 '
我得到实际的 '
.
但是,稍后,当我通过以下方式收集用户选择的答案时:
const selectedAnswer = event.currentTarget.innerHTML
我得到 "Don't Stop Me Now"
,当我将它与我的正确答案数组进行比较时,我得到类似:
"Don't Stop Me Now" === "Don't Stop Me Now"
其中returns假的时候,其实应该是真的因为是正确答案...
我该如何解决这个问题?
您可以尝试使用反引号代替 '
的 HTML 代码。
[... ,`Don't Stop Me Now`, ...]
'
是 HTML '
的实体代码。因此,如果这只是您所关心的,您可以尝试先映射该数组,然后 replace/convert 将 HTML 实体代码映射到字符中,如下所示:
[... ,"Don't Stop Me Now", ...].map(item => item.replace(/'/g, "'"));
好吧 '
是一个 HTML 实体。所以我创建了一个新元素,然后将其 innerHTML
属性 设置为具有 HTML 实体的文本,然后将其 innerText
与用户的输入进行比较。
const text = "Don't Stop Me Now";
const checkAnswer = (correct, input) => Object.assign(document.createElement('span'), { innerHTML: correct }).innerText == input;
console.log(checkAnswer(text, "Don't Stop Me Now"));
我是 Web 开发的新手,正在 AJAX 函数和 HTTP 请求中迈出我的第一步。
我只知道 vanilla JS,CSS 和 HTML。我对正则表达式也知之甚少,所以如果答案能尊重这一点,我将不胜感激。
我正在开发一个简单的问答游戏,我从 opentdb 中获取问答。数据保存在问题数组中,格式如下 (注意 correct-answer
上的 '
):
[..., {
category: "Entertainment: Film",
type: "multiple",
difficulty: "medium",
question: "What Queen song plays during the final fight scene of the film "Hardcore Henry"?",
correct_answer: "Don't Stop Me Now",
incorrect_answers: [
"Brighton Rock",
"Another Bites the Dust",
"We Will Rock You"
]
}, ...]
成功获取数据后,我做的第一件事就是将所有正确答案放入一个数组中,稍后我将使用该数组与用户选择的答案进行比较。在这个例子中,我的正确答案数组类似于 (再次注意 '
):
[... ,"Don't Stop Me Now", ...]
当我将问题和答案呈现给 DOM 时,通过创建必要的元素并使用 innerHTML,一切都在浏览器上显示良好(即,而不是 '
我得到实际的 '
.
但是,稍后,当我通过以下方式收集用户选择的答案时:
const selectedAnswer = event.currentTarget.innerHTML
我得到 "Don't Stop Me Now"
,当我将它与我的正确答案数组进行比较时,我得到类似:
"Don't Stop Me Now" === "Don't Stop Me Now"
其中returns假的时候,其实应该是真的因为是正确答案...
我该如何解决这个问题?
您可以尝试使用反引号代替 '
的 HTML 代码。
[... ,`Don't Stop Me Now`, ...]
'
是 HTML '
的实体代码。因此,如果这只是您所关心的,您可以尝试先映射该数组,然后 replace/convert 将 HTML 实体代码映射到字符中,如下所示:
[... ,"Don't Stop Me Now", ...].map(item => item.replace(/'/g, "'"));
好吧 '
是一个 HTML 实体。所以我创建了一个新元素,然后将其 innerHTML
属性 设置为具有 HTML 实体的文本,然后将其 innerText
与用户的输入进行比较。
const text = "Don't Stop Me Now";
const checkAnswer = (correct, input) => Object.assign(document.createElement('span'), { innerHTML: correct }).innerText == input;
console.log(checkAnswer(text, "Don't Stop Me Now"));