0

基本的に、これまでのところ、2 つのポップアップ/アラート ボックスがあるページです。1 つ目は、ユーザーにお気に入りの Web サイトの名前を入力するように求めます。2 つ目は、お気に入りの Web サイトへの URL を入力するようユーザーに求めます。結果は、クリックしたときに入力した URL に移動する、ユーザーが入力した名前としてホームページのハイパーリンクに表示されるはずです。私のコードは次のようになります。

<!DOCTYPE HTML>
<html>
    <head>
        <title>Untitled</title>
    </head>
    <body>
        <script type="text/javascript">
            var favoriteSite;
            favoriteSite = prompt ("What is your favorite web site?")
            favoriteSite = prompt ("What is the URL of that site?") 
            document.write('<a href="' + favoriteSite + '"></a>')
        </script>                       
        <h1>Link to favorite site.</h1>
        <h2>This is my favorite web site</h2>  
    </body>
</html>

PS。私は JavaScript の非常に初心者です。ありがとう。

これは私が最終的に変更したものです:

<html>
    <head>
        <title>Untitled</title>
    </head>
    <body>
        <script type="text/javascript">
            var favoriteSite;
            var favoriteSiteName;
            favoriteSiteName = prompt ("What is your favorite web site?");
            favoriteSite = prompt ("What is the URL of that site?"); 
            document.write("<h1>Link to favorite website.</h1>");
            document.write("<h2>This is my favorite web site" +" " +     favoriteSiteName.link("https://" + favoriteSite + "") + "</p>");
        </script>                       
    </body>
</html>
4

6 に答える 6

0

document.write から離れてください!!!

document.write が「悪い習慣」と見なされるのはなぜですか?

Live Demo

JS

//Get the text you want to display
var text = document.createTextNode(prompt ("What is your favorite web site?")); 

//Create an attribute to for the href
var href = document.createAttribute("href");
href.value = prompt ("What is the URL of that site?") 

//Create a link
var link = document.createElement('a');

//Add the attribute to the link
link.setAttributeNode(href);

//Add the text to the link
link.appendChild(text); 

//Add the link to the page
document.getElementById('link').appendChild(link);  

HTML

<h1>Link to favorite site.</h1>

<h2>This is my favorite web site: <span id='link'></span></h2>  

最後に、DOM 操作を処理するためのフレームワークの使用を真剣に検討します。学ぶべき素晴らしいものはjQueryです。

于 2013-09-04T03:06:24.017 に答える
0

はい、document.write は既存のすべてのドキュメント ノードに上書きします。スクリプトを実行する前に、ページが読み込まれるのを待つ必要があります。これを試してください。

<!doctype html>

<html>
  <head>
    <script type='text/javascript'>
      window.addEventListener("load",function(){
        var siteName = prompt("what is you fave site name?");
        var siteURL = prompt("what is its URL?");
        var a = document.body.appendChild(document.createElement("a"));
        a.href = siteURL;
        a.innerHTML = siteName;
      });
    </script>
  </head>

  <body>

  </body>
</html>
于 2013-09-04T03:07:01.940 に答える
0

リンクにコンテンツがありません。次のようなことを試してください:

JSを見るには:

http://jsbin.com/enOWeCI/1/edit

実際に見るには:

http://jsbin.com/enOWeCI/1/

于 2013-09-04T03:10:19.117 に答える
0

あなたが持っているものはほとんど正しいです。

var favoriteSiteName = '',
    favoriteSiteURL = '';

favoriteSiteName = prompt('What is your favorite web site?');
favoriteSiteURL = prompt('What is the URL of that site?');
document.write('<a href="' + favoriteSiteURL + '">' + favoriteSiteName + '</a>');

行末を示すセミコロンがなく、サイト名をリンクに追加していました。また、h1andh2要素は要素内に属しませんscript

JSFiddle。

于 2013-09-04T03:03:26.267 に答える
0

ハイパーリンクのテキストを設定する必要があります。そうしないと、ハイパーリンクが表示されません。

favoriteSiteName = prompt ("What is your favorite web site?")

favoriteSite = prompt ("What is the URL of that site?") 

document.write('<a href="' + favoriteSite + '">'+favoriteSiteName+'</a>')

ちなみに、prompt や alert は使用しないでください。このようなダイアログが複数あるとユーザーが煩わしくなり、ブラウザが警告を出し、UI 自動化のテストが難しくなります。jquery ui ダイアログまたは div ポップアップを使用してユーザー入力を取得し、jquery を使用してハイパーリンクを作成できます。

于 2013-09-04T03:03:40.617 に答える
0

セミコロンが欠落しており、サイト変数と URL 変数も同じです。ハイパーリンクのテキストを設定しないと、ハイパーリンクが表示されません

var favoriteSite;
var favoriteUrl ;

 favoriteSite = prompt ("What is your favorite web site?");

 favoriteUrl = prompt ("What is the URL of that site?"); 

document.write('<a href="' + favoriteSite + '">Site</a>');
document.write('<a href="' + favoriteUrl + '">Url</a>');

</script>     
于 2013-09-04T03:03:41.080 に答える