document.createElement('p')。setAttribute('onclick','view()')不起作用

时间:2020-05-01 12:33:43

标签: javascript

.setAttribute命令有一个小问题。我正在创建一个名为view的元素:

var view = document.createElement('p')
view.innerHTML = "VIEW"
view.style.color = "#e60f0f"
view.style.fontFamily = "Montserrat"
view.style.fontWeight = "600"
view.style.fontSize = "13px"
view.style.right = "5px"
view.style.position = "absolute"
view.style.top = "0px"
view.style.marginTop = "5px"
view.style.backgroundColor = "transparent"
view.style.padding = "10px"
view.style.borderRadius = "7px"
view.setAttribute('onclick', 'view(name, date, type)')
document.getElementById(newId).appendChild(view)

运行此命令时,除.setAttribute()函数外,所有内容均呈现。我不知道为什么。有人知道吗?非常感谢!

如果需要,这里是view()函数:

function view(name, date, type) {
  window.location = '/flightStatus?name=' + name + '&date=' + date + '&type=' + type
}

另一个需要注意的是:我将其发送到Node.js ...我认为没关系,上面的代码是客户端:)

2 个答案:

答案 0 :(得分:1)

您只能在内联方法中使用字符串。看起来像这样(或使用模板文字):

view.setAttribute('onclick', 'view(\'' + name + '\', \'' + date + '\', \'' + type + '\')')

您应该使用适当的DOM方法。只需替换

view.setAttribute('onclick', 'view(name, date, type)')

使用

view.addEventListener('click', () => view(name, date, type));

答案 1 :(得分:0)

您需要在此行中转义变量: client.ServerCertificateValidationCallback = (s, c, h, e) => true;

我会使用模板文字:

view.setAttribute('onclick', 'view(name, date, type)')

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals

如果不确定是使用addEventListener还是onClick:

addEventListener vs onclick

相关问题