使用Javascript将HTML标记中的Text替换为innerHTML和函数

时间:2010-01-14 12:18:41

标签: javascript

我正在尝试使用元素id“greeting”和外部java脚本更改h1标记内的文本。我在试图弄清楚如何调用已收集变量的函数init并在下一个函数中使用它时遇到了麻烦。这是我到目前为止所拥有的。

HTML            

 <head>

    <title>Matt Beckley</title>
    <script type="text/javascript" src="script1.js"></script>
</head> 

<body>

 <h1 id="greeting">Welcome!</h1>

 </body>
</html>

问题所在的脚本!

 window.onload = init;

 function init() 
 {
 var fullname=prompt("Please Enter you name!","Anonymous ");
(fullname == "Anonymous")? "Anonymous " : "";

 var nickname=prompt("Please Enter you nickname!"," None");
 (nickname == "None")? " None": ""; 
 }

 function writeGreeting()
 {
    document.getElementById("greeting").innerHTML= ?????????
 }

所以我不知道如何使最后一个函数工作,以便h1标签显示一个名称和一个缺口。 w3schools只显示“字符串”,而不是调用其他功能的能力。有谁知道怎么做?

6 个答案:

答案 0 :(得分:1)

如何合并initwriteGreeting函数:

window.onload = init;

function init() 
{
 var fullname=prompt("Please Enter you name!","Anonymous ");
 fullname = (fullname == "Anonymous")? "Anonymous " : "";

 var nickname=prompt("Please Enter you nickname!"," None");
 nickname = (nickname == "None")? " None": ""; 
 document.getElementById("greeting").innerHTML= "Welcome " + fullname + " (" + nickname + ")";
}

P.S。语法的一小部分 - 你可能想要“请输入你的名字”,而不是“请输入你的名字”,昵称提示也是如此。

答案 1 :(得分:1)

为什么不使用.inner 文字呢?

答案 2 :(得分:0)

// Create two GLOBAL variables
var fullname = "";
var nickname = "";

function init() {
  fullname = /* ... */
  nickname = /* ... */
  // pass the nickname on to the greeting function
  writeGreeting(nickname);
}

// This function is remain separate, if you wish to call it again
// at a later time before a page-refresh.
function writeGreeting(name) {
  document.getElementById("greeting").innerHTML = name;
}

答案 3 :(得分:0)

这样怎么样?

如果你不放,它会显示“欢迎全名!”或“欢迎昵称”或“欢迎匿名!”任何

function init() {
     var fullname=prompt("Please Enter you name!");
     var nickname=prompt("Please Enter you nickname!");
     writeGreeting(fullname||nickname||"Anonymous");
}

function writeGreeting(name){
    document.getElementById("greeting").innerHTML= "Welcome "+name+"!";
}

答案 4 :(得分:0)

我喜欢Dominic的解决方案。请记住,您应该小心用户输入的任何数据。在使用之前,我建议使用escape()函数转义字符串。

e.g。

document.getElementById("greeting").innerHTML= "Welcome " + escape( fullname ) +
                                               " (" + escape( nickname ) + ")";

答案 5 :(得分:0)

试试这个。用ie,chrome和ff测试(全部最新)。

var msg = "Welcome " + fullname + "(" + nickname + ")!";

var greetingElement = document.getElementById("greeting");

if(greetingElement.firstChild == null)
    greetingElement.appendChild(document.createTextNode(msg));
else
    greetingElement.firstChild.nodeValue = msg;