2011-10-19 7 views
0

ボタンをクリックしてページをリダイレクトします。しかし、私は引用符で完全に台無しです。ここでJavascriptでボタンをクリックして別のページにジャンプするにはどうすればよいですか?

はコードです:

child.innerHTML += "<a class='sliding-element' href='javascript:sendSurvey(" + (m + 1) + ")'>Survey " + surveyList[m].Name + "</a>" + "<input type='button' onClick='parent.location='QuestionPage.aspx''/>"; 

それはQuestionPage.aspxに私をリダイレクトすることはできません。単に何もしません。

+1

標準のリンクを使用してボタンとしてスタイルを設定できないのはなぜですか?ブラウザの入力ボタンを使用したくない場合は、標準のリンクでラップしてください。 – Shakakai

+0

そして、生成されたHTMLリンクはどのように見えますか? –

答えて

0

は、私はあなたの関数が何をするかわかりませんが、あなたは二重引用符をエスケープしてみてください:

child.innerHTML += "<a class=\"sliding-element\" href=\"javascript:sendSurvey(\" + (m + 1) + \")\">Survey " + surveyList[m].Name + "</a>" + "<input type=\"button\" onClick="parent.location=\"QuestionPage.aspx\""/>"; 
+1

申し訳ありませんが、引用符が間違っています。 –

+0

あなたはアドバイスを提供しようとしている2人の異なる人-1を出します... – Oseer

+0

彼らの答えが間違っていたからです。これはダウンワードが意味することです。そして今、受け入れられた答えには鮮明な構文エラーがあり、Markdown構文の強調表示さえ明らかになります。 –

-2
child.innerHTML += "<a class='sliding-element' href='javascript:sendSurvey(" + (m + 1) + ")'>Survey " + surveyList[m].Name + "</a>" + "<input type='button' onClick=\"parent.location='QuestionPage.aspx'\"/>"; 

あなたの引用符に問題があります:あなたは、ネストされていないエスケープを使用する必要がある」と「

+1

それは当てはまりません。表示するには、あなたのFirebugコンソールに 'window.location = 'http://www.google.com';'と書いてください。 –

-2

はここにあなたのコードが読みやすいっぽい作られている:

child.innerHTML += "<a class='sliding-element'" 
       + "href='javascript:sendSurvey(" + (m + 1) + ")'>Survey " 
       + surveyList[m].Name + "</a>" 
       + "<input type='button' " 
       + "onClick='parent.location='QuestionPage.aspx''/>"; 

引用符を内(最後の行)が間違っています。あなたは入れ子にされた引用符を持っていて、それらをエスケープしなければなりません。最後に余分な引用符があります。

変更:

child.innerHTML += "<a class='sliding-element'" 
       + "href='javascript:sendSurvey(" + (m + 1) + ")'>Survey " 
       + surveyList[m].Name + "</a>" 
       + "<input type='button' " 
       + "onClick='parent.location=\"QuestionPage.aspx\" />"; 
+0

parent.locationのインスタンスです。window.locationまたはdocument.locationであっても、ブラウザがサポートしているものであってはなりません。この時点で、親オブジェクトはDOM親を参照します。 – Birey

+1

これは本当に悪いことをOPに伝えてください。 –

+0

@Bipins:おそらく、わからない。私は引用文を修正しているだけで、スクリプトの意味やそのメリットを見直すことはしません。 –

0

は、HTMLを構築する要素を構築しないでください:

var link = document.createElement("a"); 
link.className = "sliding-element"; 
link.href = ""; 
link.onclick = function (e) { 
    e = e || window.event; 
    e.preventDefault && e.preventDefault(); 
    e.returnValue = false; 
    sendSurvey(m + 1); 
}; 
link.appendChild(document.createTextNode("Survey " + surveyList[m].Name)); 
var btn = document.createElement("input"); 
btn.type = "button"; 
btn.value = "click me"; 
btn.onclick = function (e) { 
    parent.location.href = "QuestionPage.aspx"; 
}; 
child.appendChild(link); 
child.appendChild(btn); 

それは少し冗長なのですが、エラーが起こりにくいです。

+0

'document.createElement(" ")' [どういうことはできますか?](http://jsfiddle.net/uUtw2/)なぜ 'e.preventDefault && e.preventDefault();'? – alex

+0

[document on createElement](http://msdn.microsoft.com/en-us/library/ms536389(VS.85).aspx)には、その構文がリストされています。現代のブラウザではまだそれが当てはまるかどうかはわかりませんが、作成した後に 'input'の' type'を指定できないということが少なくともありました。属性。 '&&'は 'if(e.preventDefault)e.preventDefault()'の省略形です。 – gilly3

+0

'setAttribute()'で型を設定できますが、 'type'プロパティは動作しないと思います。また、あなたは後者を正しく認識していますが、私はLHSで '()'が見つからなかったのです:) – alex

関連する問題