如何在innerhtml中传递字符串参数
How to pass string parameter in innerhtml
我正在创建动态 html 基本服务器响应。
示例:
var responseServer = {
name: "al the' too"
}
var htmlView = `<div onclick="info(responseServer.name)"> </div>`;
//Error: al identifier is not defined.
var htmlView = `<div onclick="info('responseServer.name')"> </div>`;
//Error: Uncaught SyntaxError: missing ) after argument list
构建后 html 我得到以下代码:
function info(name){
alert(name);
}
<div>
<button onclick="info('al al'the ra)">
Test
</button>
</div>
如果你为这个做一个简单的片段:
var responseServer = {
name: "al the' too"
}
function info(str){
console.log(str)
}
<div onclick=info(responseServer.name)>Click me!</div>
你可以看到它运行良好。正如@muasif80 指出的那样,它与 info()
函数有关!
编辑
如果我动态添加 div 和 onclick()
事件,它仍然有效:
$('body').append('<div onclick=info(responseServer.name)>Click me!</div>');
var responseServer = {
name: "al the' too"
}
function info(str){
console.log(str)
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
代码有效。您需要将 onclick 中的函数用引号引起来。请检查片段
function streetInfoSinage(name){
alert(name)
}
var name = "Al Ma'mourah St";
function createDom(){
let responseServer = {
name: "al the' too"
};
let div = document.createElement("div");
div.textContent = "Hello World " + responseServer.name;
div.addEventListener("click", function(){info(responseServer.name)});
document.getElementById("my-dom").appendChild(div);
}
function info(name){
alert(name);
}
<p style="margin-top:2px;margin-bottom:2px;" onclick='streetInfoSinage("Razeen St")'>
Razeen St <i style="font-size: 14px;" class="fas fa-info-circle"></i>
</p>
<div id="my-dom">
</div>
<button onclick="createDom()">call info</div>
我已将代码段更新为再举一个例子
我得到了如下解决方法:
function info(name){
alert(atob(name));
}
var sName = "al al'the ra";
var myHtml = document.getElementById("one");
myHtml.insertAdjacentHTML('beforeend', "<button onclick=info(btoa(sName))> Test </button>");
<div id="one"></div>
这不是实际的构建和运行时环境。我已经在带有 angular 的 ionic 3 中使用了这个变通方法。
我正在创建动态 html 基本服务器响应。
示例:
var responseServer = {
name: "al the' too"
}
var htmlView = `<div onclick="info(responseServer.name)"> </div>`;
//Error: al identifier is not defined.
var htmlView = `<div onclick="info('responseServer.name')"> </div>`;
//Error: Uncaught SyntaxError: missing ) after argument list
构建后 html 我得到以下代码:
function info(name){
alert(name);
}
<div>
<button onclick="info('al al'the ra)">
Test
</button>
</div>
如果你为这个做一个简单的片段:
var responseServer = {
name: "al the' too"
}
function info(str){
console.log(str)
}
<div onclick=info(responseServer.name)>Click me!</div>
你可以看到它运行良好。正如@muasif80 指出的那样,它与 info()
函数有关!
编辑
如果我动态添加 div 和 onclick()
事件,它仍然有效:
$('body').append('<div onclick=info(responseServer.name)>Click me!</div>');
var responseServer = {
name: "al the' too"
}
function info(str){
console.log(str)
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
代码有效。您需要将 onclick 中的函数用引号引起来。请检查片段
function streetInfoSinage(name){
alert(name)
}
var name = "Al Ma'mourah St";
function createDom(){
let responseServer = {
name: "al the' too"
};
let div = document.createElement("div");
div.textContent = "Hello World " + responseServer.name;
div.addEventListener("click", function(){info(responseServer.name)});
document.getElementById("my-dom").appendChild(div);
}
function info(name){
alert(name);
}
<p style="margin-top:2px;margin-bottom:2px;" onclick='streetInfoSinage("Razeen St")'>
Razeen St <i style="font-size: 14px;" class="fas fa-info-circle"></i>
</p>
<div id="my-dom">
</div>
<button onclick="createDom()">call info</div>
我已将代码段更新为再举一个例子
我得到了如下解决方法:
function info(name){
alert(atob(name));
}
var sName = "al al'the ra";
var myHtml = document.getElementById("one");
myHtml.insertAdjacentHTML('beforeend', "<button onclick=info(btoa(sName))> Test </button>");
<div id="one"></div>
这不是实际的构建和运行时环境。我已经在带有 angular 的 ionic 3 中使用了这个变通方法。