当サイトはユーザー体験を改善するためのメンテナンスを実施中に機能が制限される予定です。記事を読んでもあなたの問題が解決せず質問をしたい場合は、Twitter の @FirefoxSupport、Reddit の /r/firefox で、サポートコミュニティが皆さんを助けようと待機しています。

Mozilla サポートの検索

Avoid support scams. We will never ask you to call or text a phone number or share personal information. Please report suspicious activity using the “Report Abuse” option.

詳しく学ぶ

このスレッドはアーカイブに保管されました。 必要であれば新たに質問してください。

cannot set param element value attribute using javascript setAttribute

  • 3 件の返信
  • 2 人がこの問題に困っています
  • 37 回表示
  • 最後の返信者: cor-el

more options

When appending param elements via createFragment the setAttribute javascript function does not set the "value" attribute. It is necessary to set the nodetext to add the this value attribute to the param element.

Second when using the latter method the generated html sets the "value" to the innerHTML. The resulting HTML when view by "Inspect" looks like this.

<param id="myID">myValue</param>

Note: [the element close text </param> is correctly displayed using Inspect but when using File->SavePageAs the ending text is not saved correctly. I have reported this in another Moz. question in FF Help.]

function setparamAttrs(parmID, parmVal) {

var gData = document.createDocumentFragment();
 var newNode = document.createElement("param");
 var textStr = document.createTextNode(parmVal);
 newNode.appendChild(textStr);
 newNode.setAttribute("id", parmID);
 //newNode.setAttribute("value", parmVal);  // this does not work
 //newNode.setAttribute("innerHTML", parmVal);  //this does not work
 gData.appendChild(newNode);
 document.body.appendChild(gData);

}

I was, however, able to retrieve the "value" after it was appended using:

var val = document.getElementById("parm0").value);

getAttribute("value") does not work either.

Finally I added the param elements to my HTML as this; <param id="myID">myValue</param>. I then attempted to extract the value using document.getElementById("myID").innerHTML. No text was returned. When I examined the HTML document with Inspect my HTML param element was displayed as <param id="myID">myVal. The closing element text was missing the same as when I use SavePageAs that I previously reported.

When appending param elements via createFragment the setAttribute javascript function does not set the "value" attribute. It is necessary to set the nodetext to add the this value attribute to the param element. Second when using the latter method the generated html sets the "value" to the innerHTML. The resulting HTML when view by "Inspect" looks like this. <param id="myID">myValue</param> Note: [the element close text </param> is correctly displayed using Inspect but when using File->SavePageAs the ending text is not saved correctly. I have reported this in another Moz. question in FF Help.] function setparamAttrs(parmID, parmVal) { var gData = document.createDocumentFragment(); var newNode = document.createElement("param"); var textStr = document.createTextNode(parmVal); newNode.appendChild(textStr); newNode.setAttribute("id", parmID); //newNode.setAttribute("value", parmVal); // this does not work //newNode.setAttribute("innerHTML", parmVal); //this does not work gData.appendChild(newNode); document.body.appendChild(gData); } I was, however, able to retrieve the "value" after it was appended using: var val = document.getElementById("parm0").value); getAttribute("value") does not work either. Finally I added the param elements to my HTML as this; <param id="myID">myValue</param>. I then attempted to extract the value using document.getElementById("myID").innerHTML. No text was returned. When I examined the HTML document with Inspect my HTML param element was displayed as <param id="myID">myVal. The closing element text was missing the same as when I use SavePageAs that I previously reported.

選ばれた解決策

Yes, that is the correct way to code this and it works for me with no problems.

この回答をすべて読む 👍 0

すべての返信 (3)

more options

You need to set the value attribute and not the innerHTML of a param if you want to inspect the value.

var val = document.getElementById("parm0").getAttribute("value"); 

function setparamAttrs(parmID, parmVal) {

 var gData =  document.createDocumentFragment();
 var newNode = document.createElement("param");

 newNode.setAttribute("id", parmID);
 newNode.setAttribute("value", parmVal);

 gData.appendChild(newNode);
 document.body.appendChild(gData);
}

setparamAttrs("param0", "test")
alert(document.getElementById("parm0").getAttribute("value"));
 
more options

The reason I was getting the innerHTML was due to the textNode being added. Whatever text is in the textNode becomes innerHTML. Once this was removed the dynamically added param element was displayed correctly and when I performed a SavePageAs the resulting HTML output was correct. Below is the working code. Please post after you confirm then I will mark as the chosen solution.

<html>
<body>

<h3>Param Fragment Demo</h3>


<param id='testParm' value='testValue'>		

<script language="javascript">

// begin main

alert(document.getElementById("testParm").value);

var gData = document.createDocumentFragment();

var newNode = document.createElement("param");
//var textStr = document.createTextNode(".");
//newNode.appendChild(textStr);
newNode.setAttribute("value", "fragValue");
newNode.setAttribute("id", "fragParm");

gData.appendChild(newNode);
document.body.appendChild(gData);

alert(document.getElementById("fragParm").value);

// end main

</script>
</body>
</html>

この投稿は cor-el により に変更されました

more options

選ばれた解決策

Yes, that is the correct way to code this and it works for me with no problems.