私的良スレ書庫
不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitterでログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。
元スレ+ JavaScript の質問用スレッド vol.80 +
JavaScript スレッド一覧へ / JavaScript とは? / 携帯版 / dat(gz)で取得 / トップメニューみんなの評価 :
レスフィルター : (試験中)
>>486>>487>>488>>489>>490>>491
ありがとうございます。漠然としすぎました。
上記(>>485)のような構造(これが繰り返しある)をしているサイトのGreasemonkeyを作ろうと思っていて、
ただ、取得したいa要素にidがついておらず、またdiv、p、h2が別の場所にも散在しているため、
「hogeクラスのdivの中にある、最初のa要素(本当はhogeの中にa要素は複数ある)」のテキスト部分を
取り出そうと思ってやってみたのですが、四苦八苦してしまった、という感じです。
var hogelist = document.getElementsByClassName('hoge');
for (var i = 0; i < hogelist.length; i++) {
とした後の、テキスト取得の部分がうまくいかないです。
hogelist[i].childNodesだったりitemだったり色々組み合わせて試してみたんですが、
動かなかったり、nullやUndefinedが返ってきたり・・・
たぶん初歩的な部分が分かってないんだと思うんですが、引き続きアドバイスお願いしたいです
ありがとうございます。漠然としすぎました。
上記(>>485)のような構造(これが繰り返しある)をしているサイトのGreasemonkeyを作ろうと思っていて、
ただ、取得したいa要素にidがついておらず、またdiv、p、h2が別の場所にも散在しているため、
「hogeクラスのdivの中にある、最初のa要素(本当はhogeの中にa要素は複数ある)」のテキスト部分を
取り出そうと思ってやってみたのですが、四苦八苦してしまった、という感じです。
var hogelist = document.getElementsByClassName('hoge');
for (var i = 0; i < hogelist.length; i++) {
とした後の、テキスト取得の部分がうまくいかないです。
hogelist[i].childNodesだったりitemだったり色々組み合わせて試してみたんですが、
動かなかったり、nullやUndefinedが返ってきたり・・・
たぶん初歩的な部分が分かってないんだと思うんですが、引き続きアドバイスお願いしたいです
>>503
var x = document.getElementsByClassName("hoge");
for(var i = 0; i < x.length; i++){
var a = x[i].getElementsByTagName("a");
for(var j = 0; j < a.length; j++){
var t = a[j].firstChild.nodeValue;
if(t.nodeType == 3){
alert(t.nodeValue);
}
}
}
var x = document.getElementsByClassName("hoge");
for(var i = 0; i < x.length; i++){
var a = x[i].getElementsByTagName("a");
for(var j = 0; j < a.length; j++){
var t = a[j].firstChild.nodeValue;
if(t.nodeType == 3){
alert(t.nodeValue);
}
}
}
>>501
代書屋さんにある和文タイプみたいだ。
代書屋さんにある和文タイプみたいだ。
>>509
全角スペースだからちゃんと半角に直してね
全角スペースだからちゃんと半角に直してね
Firefox は \u3000 を White Space と解釈できるはずなんだが…。
http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/7_Lexical_Conventions.html#section-7.2
http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/7_Lexical_Conventions.html#section-7.2
>>509 何で動かないのか書かないと「ああそうですか」で終わっちゃうわけで
>>513
ミスってたすまん
- var t = a[j].firstChild.nodeValue;
+ var t = a[j].firstChild;
でもt.nodeTypeがnullになるからUndefinedにはならないんだよね、ちゃんと更新は反映されてるの?
ミスってたすまん
- var t = a[j].firstChild.nodeValue;
+ var t = a[j].firstChild;
でもt.nodeTypeがnullになるからUndefinedにはならないんだよね、ちゃんと更新は反映されてるの?
ちなみに本来のHTMLはこんな感じです(最初から省略しなきゃ良かったorz
<div class="hoge">
<p>
<a href="http://hogehoge0">リンクテキスト0</a>
</p>
<h2>
<a href="http://hogehoge1">リンクテキスト1</a> // これのテキスト部分を取得したい
</h2>
<p>
<span>
<a href="http://hogehoge2">リンクテキスト2</a>
</span>
<a href="http://hogehoge3">リンクテキスト3</a>
</p>
</div>
<div class="hoge">
<p>
<a href="http://hogehoge0">リンクテキスト0</a>
</p>
<h2>
<a href="http://hogehoge1">リンクテキスト1</a> // これのテキスト部分を取得したい
</h2>
<p>
<span>
<a href="http://hogehoge2">リンクテキスト2</a>
</span>
<a href="http://hogehoge3">リンクテキスト3</a>
</p>
</div>
Firefoxならこれでいいんじゃない
Array.forEach(
document.getElementsByClassName('hoge'),
function (div) {
var link = div.getElementsByTagName('a')[1];
var text = link.textContent;
alert(text);
});
Array.forEach(
document.getElementsByClassName('hoge'),
function (div) {
var link = div.getElementsByTagName('a')[1];
var text = link.textContent;
alert(text);
});
・ループを途中で止められない(everyかsomeなら止められる)
・ループごとにスコープが生成される(>>327はそんな感じ)
・ループごとにスコープが生成される(>>327はそんな感じ)
>>521
無限ループと同じでbreakすれば止められるよね
無限ループと同じでbreakすれば止められるよね
javascriptのforEach文ってfor (var i in hoge)でしょ?
<script>
var hoge = [1,4,1,4,2,1,3,5,6];
for (var i in hoge) {
document.write(hoge[i]+"<br>");
if (hoge[i] == 3) {
break;
}
}
</script>
<script>
var hoge = [1,4,1,4,2,1,3,5,6];
for (var i in hoge) {
document.write(hoge[i]+"<br>");
if (hoge[i] == 3) {
break;
}
}
</script>
for...inやfor each...inは配列に使っちゃ駄目ってmdcに書いてあった
あとforEachは
http://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/forEach#Compatibility
と同等ってmdcに
あとforEachは
http://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/forEach#Compatibility
と同等ってmdcに
ECMAScript 5で標準化されてIE9がやっと最後に実装するというのに
いまだに「JSにはforEach文なんてない」などとぬかすか
いまだに「JSにはforEach文なんてない」などとぬかすか
>>530 それはArray.prototype.forEach(forEachメソッド)でしょ?
>>535に加え、for-inの列挙順は実装依存
以前のバージョンのOperaだったか、後方から列挙していた
以前のバージョンのOperaだったか、後方から列挙していた
for-inだけじゃなくて全てにおいて実装依存では
このスレでJavaScriptエンジンつくろうず
言語はC#で頼む
このスレでJavaScriptエンジンつくろうず
言語はC#で頼む
>>537
それはさすがに頭が悪い
それはさすがに頭が悪い
function getText(n){
var strings = [];
getStrings(n, strings);
return strings.join("");
function getStrings(n, strings) {
if (n.nodeType == 3)
strings.push(n.data);
else if (n.nodeType == 1) {
for(var m = n.firstChild; m != null; m = m.nextSibling) {
getStrings(m, strings);
}
}
}
}
このコードが動きません.教科書のサンプル写しました.
だれか教えてくれませんか
var strings = [];
getStrings(n, strings);
return strings.join("");
function getStrings(n, strings) {
if (n.nodeType == 3)
strings.push(n.data);
else if (n.nodeType == 1) {
for(var m = n.firstChild; m != null; m = m.nextSibling) {
getStrings(m, strings);
}
}
}
}
このコードが動きません.教科書のサンプル写しました.
だれか教えてくれませんか
>>541
あまり良いコードとは思えないけど、動くでしょ。
あまり良いコードとは思えないけど、動くでしょ。
else if (n.nodeType == 1) { のところがうまく動いてないっぽくて...
<SCRIPT LANGUAGE="JavaScript">
<!--
function Rogin(){
window.open("rogin.html","rogin","");
if(!$count2){$count++;$count2++;}
else if($count2){window.alert('本日は既にログイン済みです!');}
}
}
// -->
</SCRIPT>
<input type=submit value=ログイン onClick=\"return checkRogin()\">";
Perlで作成しているページのログインボタンについてなのですが
$countは累計ログイン数、$count2は今日ログインしたかどうかの記録です
上のようにしてみたところ上手くいかないのですが、サブルーチン内でcountを増やす処理ってどうすればよいのでしょうか?
<!--
function Rogin(){
window.open("rogin.html","rogin","");
if(!$count2){$count++;$count2++;}
else if($count2){window.alert('本日は既にログイン済みです!');}
}
}
// -->
</SCRIPT>
<input type=submit value=ログイン onClick=\"return checkRogin()\">";
Perlで作成しているページのログインボタンについてなのですが
$countは累計ログイン数、$count2は今日ログインしたかどうかの記録です
上のようにしてみたところ上手くいかないのですが、サブルーチン内でcountを増やす処理ってどうすればよいのでしょうか?
>>546
関数の外で変数宣言すれば外でも値が保持される。
var $count;
でもページを再表示したら保持されないよ。保持したければcookieとかサーバーサイドで保存しないと。
余談ですがifの条件でcount2のfalseを評価してるからelseにはif要らない。この場合。
あと、ログインのスペルは log in だよ。
あと、JSで変数に$は要らないよ。あってもいいけど
関数の外で変数宣言すれば外でも値が保持される。
var $count;
でもページを再表示したら保持されないよ。保持したければcookieとかサーバーサイドで保存しないと。
余談ですがifの条件でcount2のfalseを評価してるからelseにはif要らない。この場合。
あと、ログインのスペルは log in だよ。
あと、JSで変数に$は要らないよ。あってもいいけど
あと、JavaScript で未定義の変数をインクリメントしてもうまくいかないよ。
最初に数値を代入しておかないと。
最初に数値を代入しておかないと。
>>546
Perl側の処理とJavaScript側の処理を混同してるね。
Perlで生成したHTMLにあるJavaScriptから、Perlスクリプト内の変数に直接アクセスすることはできないよ。
フォームを使ってPerlスクリプトにパラメータをPOSTするか、
XMLHttpRequestでPerlスクリプトにアクセスできるようなJavaScriptをHTMLに入れておく。
Perl側の処理とJavaScript側の処理を混同してるね。
Perlで生成したHTMLにあるJavaScriptから、Perlスクリプト内の変数に直接アクセスすることはできないよ。
フォームを使ってPerlスクリプトにパラメータをPOSTするか、
XMLHttpRequestでPerlスクリプトにアクセスできるようなJavaScriptをHTMLに入れておく。
sub LOGINCHECK{
if($count2){print << " -----END-----";
<SCRIPT language="JavaScript">
function checkLogin(){
window.open("rogin.html","rogin","");
if(!count2){
var count = $count + 1;
var count2 = 1;
document.all.subject.value=count;
document.all.subject.value=count2;
document.login.submit();
}if(count2){window.alert('本日は既にログイン済みです!');return false;} }
<form method="post" action="login.cgi" name="login">
<input type="hidden" name="count">
<input type="hidden" name="count2">
<input type=submit value="ログイン" onClick="return checkLogin()"></td></tr>
</form>
</script>
-----END-----
}else{print "";}
my $count = $in{'count'};
my $count2 = $in{'count2'};}
LoginとRoginのミスはお恥ずかしい・・・
PERLでの記述になっていますが上記のように作りました
Java内でPOSTで送信した値をJava終了時に取得させてみたところやはり値の取得ができていません
POSTの使い方間違ってますかね?
if($count2){print << " -----END-----";
<SCRIPT language="JavaScript">
function checkLogin(){
window.open("rogin.html","rogin","");
if(!count2){
var count = $count + 1;
var count2 = 1;
document.all.subject.value=count;
document.all.subject.value=count2;
document.login.submit();
}if(count2){window.alert('本日は既にログイン済みです!');return false;} }
<form method="post" action="login.cgi" name="login">
<input type="hidden" name="count">
<input type="hidden" name="count2">
<input type=submit value="ログイン" onClick="return checkLogin()"></td></tr>
</form>
</script>
-----END-----
}else{print "";}
my $count = $in{'count'};
my $count2 = $in{'count2'};}
LoginとRoginのミスはお恥ずかしい・・・
PERLでの記述になっていますが上記のように作りました
Java内でPOSTで送信した値をJava終了時に取得させてみたところやはり値の取得ができていません
POSTの使い方間違ってますかね?
前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
みんなの評価 : 類似してるかもしれないスレッド
- + JavaScript の質問用スレッド vol.85 + (1001) - [97%] - 2011/4/25 21:32
- + JavaScript の質問用スレッド vol.81 + (1001) - [97%] - 2010/12/10 20:01
- + JavaScript の質問用スレッド vol.87 + (1001) - [97%] - 2011/6/21 6:33
- + JavaScript の質問用スレッド vol.86 + (1001) - [97%] - 2011/5/27 21:50
- + JavaScript の質問用スレッド vol.90 + (1001) - [97%] - 2011/10/26 4:18
- + JavaScript の質問用スレッド vol.84 + (1001) - [97%] - 2011/3/30 7:32
- + JavaScript の質問用スレッド vol.83 + (1001) - [97%] - 2011/2/24 8:02
- + JavaScript の質問用スレッド vol.82 + (1001) - [97%] - 2011/1/19 7:54
- + JavaScript の質問用スレッド vol.90 + (1001) - [97%] - 2011/11/15 20:32
- + JavaScript の質問用スレッド vol.89 + (1001) - [97%] - 2011/9/4 4:17
- + JavaScript の質問用スレッド vol.88 + (1001) - [97%] - 2011/7/20 7:03
- + JavaScript の質問用スレッド vol.130 + (1001) - [95%] - 2017/11/25 20:45
- + JavaScript の質問用スレッド vol.104 + (1001) - [95%] - 2013/1/28 4:00
- + JavaScript の質問用スレッド vol.103 + (1001) - [95%] - 2012/11/9 15:30
- + JavaScript の質問用スレッド vol.102 + (1001) - [95%] - 2012/9/11 17:30
- + JavaScript の質問用スレッド vol.120 + (1002) - [95%] - 2014/11/8 1:15
- + JavaScript の質問用スレッド vol.101 + (1001) - [95%] - 2012/7/16 14:15
トップメニューへ / →のくす牧場書庫について