函数参数可以传递给字符串吗?

时间:2019-06-15 03:39:41

标签: javascript html ecmascript-6

我正在用JavaScript制作计算器表,并且一直在写document.getElementById('x').innerHTML。我可以编写一个函数来替换此代码吗?例如:

function select (a) {
  return document.getElementById(${a}).innerHTML;
}

我看到的麻烦是,如果我在getElementById中使用了模板文字,则无法添加将字符串定义为字符串所必需的引号。

将其放回上下文,表中有许多单元格,每个单元格具有不同的ID。为了允许js更新每个单元格,我不得不重复编写:document.getElementById('x').innerHTML。这让我感到奇怪,我是否可以编写一个小函数让我跳过此多余的输入?函数可以接受参数并用引号引起来吗?

2 个答案:

答案 0 :(得分:3)

var select = function(a) {
  return document.getElementById(a).innerHTML;
}
var ham = select('thing');

足够好。系统已经知道那里有一个字符串,因为这就是调用select()函数时的类型。


如果在给innerHTML赋值的同时试图减少键入,那么您也必须在函数体内执行该操作。为什么?因为一旦从函数返回了innerHTML字符串属性,它就是一个不变的值,类似于说'a' = 'b'

这是赋值函数的样子:

var assign = function( target, value) {
    document.getElementById(target).innerHTML = value;
}
assign('capitalGain', '$' + currency(initialGain));

答案 1 :(得分:0)

您不需要模板文字来完成以下任务:

function select(a) {
    return document.getElementById(a).innerHTML;
}

或者,如果您必须:

function select(a) {
    return document.getElementById(`${a}`).innerHTML;
}

现在Chrome浏览器支持类似jQuery的语法-因此在新版本的Chrome浏览器中,这也将起作用。

function select(a) {
    return $(`#${a}`)[0].innerHTML;
}

或更详细和易于理解的版本:

function select(a) {
    let str = "#" + a;
    let [elem] = $(str);
    return elem.innerHTML;
}

还有一个-与冗长的对照相比,这是一种难以理解且不明智的做法。

const select = a => ([{ innerHTML: b }] = $(`#${a}`), b);