繁体   English   中英

使用参数(JavaScript)将变量直接传递到getElementById

[英]Pass a variable directly into getElementById using the parameter (JavaScript)

我正在开发我的第一个JavaScript游戏,我想在<p>标签内显示某些属性。 每个<p>标记的ID都将等于“ show-”以及属性的名称(关于属性“ name”,请参见下面的示例)。

但是我无法正确获取getElementById的语法。 有什么建议么?

<p id="show-name"></p>

<script>
    name = "Bob";
    function display(attribute) {
        putItHere = "'show-"+attribute+"'"
        document.getElementById(putItHere).innerHTML = attribute;
    }
    display(name);
</script>

您需要定位正确的元素。 目前,您的目标是“ show-Bob”而不是“ show-name”。 因此,首先从键name生成ID,然后为该元素分配一个值。

var name = "Bob";
function display(key, value) {
    var putItHere = "show-"+ key;
    document.getElementById(putItHere).innerHTML = value;
}
display('name', name);

note注意,ID在文档中应该是唯一的

但是,另一种方法是使用特定标签定位所有元素,例如

<div data-id="name"></div>
<div data-id="name"></div>
<div data-id="name"></div>

<script type="text/javascript">
    var name = "Bob";
    function display(key, value) {
        var putItHere = "show-"+ key;
        var elements = document.querySelectorAll('div[data-id="'+key+'"]');
        for(var eid in elements) {
            var element = elements[eid];
            element.innerHTML = value;
        }
    }
    display('name', name);
</script>

note ,这在IE7及以下版本中不起作用。

您的属性是Bob 因此putItHere = "'show-"+attribute+"'"等效于: putItHere = "'show-"+"Bob"+"'" ,这没有任何意义。

您应该得到以下错误Uncaught TypeError: Cannot set property 'innerHTML' of null

应该这样做:

function display(attrname, val){
    document.querySelector('#show-'+attrname).innerText=val;
}

display("name","Bob");

这是小提琴演奏。

暂无
暂无

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

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