Javascript 当存在';这是一个特殊的角色吗?

Javascript 当存在';这是一个特殊的角色吗?,javascript,html,innerhtml,Javascript,Html,Innerhtml,我有一个网页,上面有一个表格。“提交”按钮应保持停用状态,直到用户填写所有必要的字段。当他们填写一个字段时,旁边会出现一个复选标记。当所有的复选标记都在那里时,我们就可以出发了 可以通过如下代码设置复选标记: if (whatever) checkLocation.innerHTML = CHECKMARK; 这是我用来做最后检查的代码。它只是在可能有复选标记的所有位置循环。如果它找到一个没有标记的位置,它将禁用submit按钮并离开。如果全部通过,它将激活按钮并返回true function

我有一个网页,上面有一个表格。“提交”按钮应保持停用状态,直到用户填写所有必要的字段。当他们填写一个字段时,旁边会出现一个复选标记。当所有的复选标记都在那里时,我们就可以出发了

可以通过如下代码设置复选标记:

if (whatever) checkLocation.innerHTML = CHECKMARK;
这是我用来做最后检查的代码。它只是在可能有复选标记的所有位置循环。如果它找到一个没有标记的位置,它将禁用submit按钮并离开。如果全部通过,它将激活按钮并返回true

function checkSubmitButton() {
    var button = document.getElementById(SUBMIT_BUTTON);
    for (var i=0; i<CHECK_LOCATIONS.length; i++) { // should be for-each, but JS support is wonky
        var element = document.getElementById(CHECK_LOCATIONS[i]);
        console.log(CHECK_LOCATIONS[i] +": " +element.innerHTML);

        // if found unchecked box, deactivate & leave
        if (element.innerHTML != CHECKMARK) {
            button.disabled = true;
            return false;
        }
    }

    // all true--activate!
    console.log("ACTIVATING BUTTON!");
    button.disabled = false;
    return true;
}
函数checkSubmitButton(){
var按钮=document.getElementById(提交按钮);

对于(var i=0;i,可以将字符转换为其HTML实体等价物,如下所示:

var encoded = raw.replace(/[\u00A0-\u9999<>\&]/gim, function(i) {
   return '&#'+i.charCodeAt(0)+';';
});
var encoded=raw.replace(/[\u00A0-\u9999\&]/gim,函数(i){
返回'&#'+i.charCodeAt(0)+';';
});

检查字符没有问题,它的行为与
X
字符完全相同。问题是,html将检查标记字符存储为十六进制字符串中的html实体。如果将检查标记与检查标记进行比较,则其工作正常:

在本例中,您可以做的是确保CHECKMARK变量是实际的CHECKMARK字符,而不是html实体

其他选项是解码html实体:

var CHECKMARK='✓;'
var decoded_checkmark=$('').html(checkmark.text();
console.log($('div')[0].innerHTML)
if($('div')[0].innerHTML==已解码\u复选标记){
$('body')。追加('checkmark recognized
')) }
好吧,我最后做的是:我创建了一个名为
encodeHtml()
的函数,它接受一个字符或字符串,将其写入一个全新的
div
,然后返回该
div
中包含的内容:

function encodeHtml(character) {
    var element = document.createElement("div");
    element.innerHTML = character;
    return element.innerHTML;
}
然后我可以比较它返回的内容,因为它会自动将
更改为
✓",并将处理对该字符的任何不可预见的更改。这有点困难,但它可以工作。(我仍然不清楚JavaScript为什么会进行这种自动转换…但有许多设计选择让JavaScript迷惑了我,所以就这样做了。)


谢谢大家的帮助。

从哪里来的✓;是innerhtml还是CHECKMARK?这是CHECKMARK中的值。我知道你在做什么,但我非常不愿意向jQuery添加依赖项。对于像这样小的东西,这似乎是另一个可能的失败点。谢谢。不用担心,有很多方法可以避免o在不使用jquery的情况下使用javascript解码html实体。请在此处查看它们:
function encodeHtml(character) {
    var element = document.createElement("div");
    element.innerHTML = character;
    return element.innerHTML;
}