繁体   English   中英

如何在JAVASCRIPT中按变量传递参数

[英]How to pass parameter by variable in JAVASCRIPT

我在高级模式下通过闭包编译器优化我的JS时收到警告消息,但未编译。

JSC_TYPE_MISMATCH:Document.prototype.getElementById的实际参数1与形式参数不匹配

我的js函数更改div的类

for (kx = 1; kx <= 5;kx=kx+1) {
document.getElementById(kx).className='newclass';
    }

在HTML中我有五个div如下

<div id='1' class ='first'> contents </div>
<div id='2' class ='first'> contents </div>
<div id='3' class ='first'> contents </div>
<div id='4' class ='first'> contents </div>
<div id='5' class ='first'> contents </div>

此代码在正常情况下(无需压缩/优化)可以正常工作,但是在尝试对其进行优化时却显示警告/错误,如何解决?

Closure希望您将string传递给document. getElementById() document. getElementById()而不是number

JSC_TYPE_MISMATCH:Document.prototype.getElementById的实际参数1与形式参数不匹配
找到:号码
必需:字符串
在第3行字符24

 document.getElementById(kx).className='newclass'; 

因此,将kx显式转换为string 1应该删除该警告:

for (kx = 1; kx <= 5; kx++) {
    document.getElementById(kx.toString()).className='newclass';
}

不过,我不知道我会打扰。 原始文件实际上可以编译。 您得到警告而非错误(我怀疑),因为数字参数将被简单地强制转换为字符串。 就是说,如果您的环境向错误提示警告,则一定要跳过去。

1值得注意的是,您可以通过简单地将一个空字符串(例如: ''+kx )连接起来并允许类型强制执行其操作来将数字转换为字符串。 我选择使用Number.prototype. toString() Number.prototype. toString()因为出于示例的目的,方法调用更清楚地说明了意图。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM