Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Javascript将HTML标记中的文本替换为innerHTML和函数_Javascript - Fatal编程技术网

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

使用Javascript将HTML标记中的文本替换为innerHTML和函数,javascript,Javascript,我试图使用元素id“greeting”和外部java脚本更改h1标记内的文本。我在试图找出如何调用已收集变量的函数init并在下一个函数中使用它们时遇到困难。这是我到目前为止得到的 <head> <title>Matt Beckley</title> <script type="text/javascript" src="script1.js"></script> </head> <body&g

我试图使用元素id“greeting”和外部java脚本更改h1标记内的文本。我在试图找出如何调用已收集变量的函数init并在下一个函数中使用它们时遇到困难。这是我到目前为止得到的

 <head>

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

<body>

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

 </body>
</html>
HTML

 <head>

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

<body>

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

 </body>
</html>

因此,我不知道如何使最后一个函数工作,以便h1标记显示名称和刻痕。W3仅显示“字符串”,而不显示调用其他函数的能力。有人知道怎么做吗?

合并
init
writeGreeting
函数怎么样:

 <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 = (fullname == "Anonymous")? "Anonymous " : "";

 var nickname=prompt("Please Enter you nickname!"," None");
 nickname = (nickname == "None")? " None": ""; 
 document.getElementById("greeting").innerHTML= "Welcome " + fullname + " (" + nickname + ")";
}
p、 你可能想要“请输入你的名字”,而不是“请输入你的名字”,类似的昵称提示

 <head>

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

<body>

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

 </body>
</html>
// 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;
}
它将显示“欢迎全名!”或“欢迎昵称!”或“欢迎匿名!

 <head>

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

<body>

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

 </body>
</html>
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+"!";
}

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

 <head>

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

<body>

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

 </body>
</html>
e、 g

 <head>

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

<body>

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

 </body>
</html>

为什么不使用。内部​改为文本?

试试这个。使用ie、chrome和ff(均为最新版本)进行测试

 <head>

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

<body>

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

 </body>
</html>

这是一种错误的转义,它是一种特定于JavaScript的编码,有点像URL编码,但已被破坏。它会损坏常见的名称字符,如空格和重音符号<代码>转义不应用于任何事情。正确的转义应该是HTML编码,取代
Ah。然而,你必须同意,这总比什么都没有好。:)因为这只是一个问题。在其他最近的浏览器上,您可以使用DOM Level 3核心属性
textContent
。但是,是的,您肯定不想在
innerHTML
中写入未经转换的文本。如上所述,innerHTML是危险的: