为啥从函数调用分配给属性 innerHTML 不起作用?

Posted

技术标签:

【中文标题】为啥从函数调用分配给属性 innerHTML 不起作用?【英文标题】:why asignment to property innerHTML from a function call doesnt work?为什么从函数调用分配给属性 innerHTML 不起作用? 【发布时间】:2020-08-10 05:57:29 【问题描述】:

我需要你的帮助。我想调用一个函数并将结果分配给一个元素的内部 html,但它不起作用。 下面是代码:

function abc() 
  var a = document.getElementById("take").value;

  function Ram() 
    document.write("your name is : Ram <br>");
    document.write("your vill/post : Sunsyari <br>");
    document.write("your block is : Betalghat <br>");
    document.write("your Total land is: 5 bega <br>");
  

  if (a == "Ram" || a == "ram") 
    document.getElementById("show").innerHTML = Ram();
   else 
    document.getElementById("show").innerHTML = "wrong credential";
  

请帮忙怎么办?

【问题讨论】:

你应该给.innerHTML分配一个字符串。但是你的Ram 函数返回undefined,所以这是行不通的。需要return "your name is..."; 另外,avoid document.write! 尽量避免使用 document.write。几乎没有充分的理由在网页中使用它。您已经将值分配给 innerHTML,因此只需从 Ram() 返回一个字符串。 【参考方案1】:

InnerHTML 属性接受一个字符串,但在您的情况下,您实际上并没有从 Ram 函数返回任何内容。试试下面的 sn -p

function abc() 
  var a = document.getElementById("take").value;

  function Ram() 
    return `your name is : Ram <br>
    your vill/post : Sunsyari <br>
    your block is : Betalghat <br>
    your Total land is: 5 bega <br>`
  
  if (a.toLowerCase()=="ram") 
    document.getElementById("show").innerHTML = Ram();
   else 
    document.getElementById("show").innerHTML = "wrong credential";
  

abc()
#take
background:yellow;
<input value="ram" id="take">
<div id="show"><div>

【讨论】:

以上是关于为啥从函数调用分配给属性 innerHTML 不起作用?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 `obj.foo = function() ;` 没有将名称 `foo` 分配给函数?

为啥在父类的构造函数中调用重载函数时,在 ES6 类上设置属性不起作用

为啥添加innerHTML后循环和数组停止工作?

为啥 innerHtml 不起作用

直接调用分配给对象属性的闭包

这里有啥问题,为啥 innerHTML 不起作用? [关闭]