写入元素ID的另一种方法?

时间:2018-09-21 23:44:41

标签: javascript document innerhtml getelementbyid

下面有一行JavaScript。我想知道是否还有另一种写name-id标签(元素ID)的方法。那么,有没有一种我可以写的不同方式,那将意味着同一件事?例如ASCII形式?

我知道在C语言中我可以用ASCII形式编写它。

var myname = document.getElementById("name-id").innerHTML;

2 个答案:

答案 0 :(得分:1)

您可以在官方ECMAScript documentation中找到当前JavaScript实现中字符编码的技术细节。

  

ECMAScript代码使用Unicode版本8.0.0或更高版本表示。 ECMAScript源文本是一系列代码点。从U + 0000到U + 10FFFF的所有Unicode代码点值,包括代理代码点,都可能出现在ECMAScript语法允许的源文本中。

如果对技术方面不太感兴趣并且需要混淆器服务,则只需使用它们中的任何一个或进行比较即可。只需花费很少的精力,您就可以生成以下内容:

var _0x2245=['innerHTML','querySelector'],x="tell_me_a_nice_story"
.split("_"),y="#"+x[3][0]+"a"+x[1]+"-"+x[3][1];_0x2245.push(y+"d")
,function(x0,x){!function(x){for(;--x;)x0.push(x0.shift())}(++x)}(
_0x2245,4e3);var _0x1144=function(x0,x0x0){return _0x2245[x0-=0]},
myname=document[_0x1144("0x0")]( _0x1144("0x1"))[_0x2245[+2e0+0]];

console.log(myname);
<div id="name-id"
>Why would you do this?
</div>


如果您确实想让他人难以阅读代码中的name-id,则可以在其中完成很多工作。

您可以编写完全不同的内容,其中包含所有需要的字符或除一个以外的所有字符,稍后再添加,使用其他未使用的字母作为分隔符将该字符串拆分为数组,从当前位置和位置获取一些数组元素将它们放在其他位置,加入一些位置,删除其他位置并反转其他位置的值。发挥创意。

到第二行的结尾,我将innerHTMLquerySelector#name-id作为同一数组的成员。 name-id中只有tell_me_a_nice_story是由innerHTML修饰而成的,但是只要包含大多数必需的字母,我可以轻松地从稍长的文本中生成querySelectormyname=document.getElementById(_0x2245[1].substring(1)).innerHTML; myname=document.getElementById(_0x1144(1).substring(1)).innerHTML; myname=document.querySelector(_0x1144(1)||_0x2245(1e0)).innerHTML; myname=document.querySelector(_0x2245[`1`]||_0x1144(1)).innerHTML; myname=document[_0x1144(0e3)](_0x2245[1-0]||"\_(ツ)_/").innerHTML; 。将其视为一轮拼字游戏。

“代码块”的最后一行可以替换为以下任何内容:

66

或无数其他变体,“种类”可以回答您的问题并适合字符数:console.log()

但是,让我们非常清楚:任何精通JavaScript的人都可以毫无问题地调试您的代码,也可以struct tagQuestion{ int x, y; const char* qLine[150]; char ansA[150]; char ansB[150]; char ansC[150]; char ansD[150]; }question[1]; -最后一步的结果,从而在几秒钟内获得价值。

公平地说,没有服务器,您 不能真正在JavaScript(前端)中隐藏任何东西 (运行适当的加密服务)。

答案 1 :(得分:0)

元素ID自动成为全局window对象中的属性,因此您可以编写:

var myname = window['name-id'].innerHTML;

并且由于window属性是全局变量,因此也可以将其作为变量访问,但前提是ID是有效的标识符。由于标识符名称中不允许-,因此您无法使用name-id进行此操作。但是如果您有:

var myname = document.getElementById("someid").innerHTML;

您可以将其编写为:

var myname = someid.innerHTML;

但是,我实际上并不推荐这样做,我只是出于演示目的而展示它。如果元素ID与标准window属性(例如locationdocument)相同,则以标准属性为准。

请参见Do DOM tree elements with ids become global variables?