2017-11-16 4 views
1

私の背景:数年前にCSS & HTMLを学び、Javascript & JQueryを学んでいます。現在、私の会社の電子商取引のウェブサイトを改善する必要があります。split()undefinedイベントとonclickイベントでJavascriptコードを修正するにはどうすればよいですか?

ここに私がしていることがあります。

私は製品の写真(窓の中にある)といくつかの色のボタンがある製品ページを持っています。

カラーボタンをクリックすると選択されますが、写真は変更されません。

あなたはおそらく、私はあなたがそれにマッチするカラーを選択/クリックすると、製品の絵を示したコードを追加したいをそれを推測。

私はJSコードとそれの背後にあるアイデアを書いて、画像のURLを分離し、色に対応するもので変更することです。

このエラーが発生するのは、です。キャッチされていないTypeError:未定義のプロパティ 'split'を読み取ることができません。

私は解決策を探しましたが、いずれも私の問題に対応していないようです。したがって、私は助けが必要です。ここで

は、HTML(製品の画像を表示するウィンドウ/ブロック)です:

<div 
    style="z-index: 999; 
    overflow: hidden; 
    margin-left: 0px; margin-top: 0px; 
    background-position: -144px 0px; 
    width: 456px; height: 343px; 
    float: left; 
    cursor: crosshair; 
    background-repeat: no-repeat; position: absolute; 
    background-image: url(&quot;https://be-goji.com/wp- 
    content/uploads/2017/01/OSSO-ROSE.jpg&quot;); 
    top: 0px; left: 0px; display: none;" 
    class="zoomWindow">&nbsp; 
</div> 

は、ここで私は(コメント)それを修正するために書いたJavaScriptコードの抜粋です:

// isolates the HTML from the window 
var colorSwitch = document.getElementsByClassName('zoomWindow'); 

// splits the code in several strings in an array 
var colorSwitchUrl = colorSwitch[0].split(';') 

// extracts the string I want to change 
var colorSwitchChange = colorSwitchUrl.slice(12,13); 

// gets the element I want to put the event onto 
var chooseColorNoir = document.getElementsByTagName('label'); 

//function that brings picture to show in the window on click 
chooseColorNoir[0].onclick = function(){ 

    // makes the string disappear 
    colorSwitchChange.pop(); 

    // replaces it with a good one 
    colorSwitchChange.push("https://be-goji.com/wp- 
    content/uploads/2017/01/coco_noir.jpg"); 
}; 

どこに問題があるのか​​を教えてください。お勧めの別の方法がありますか?

ありがとうございます!

ナット

注:それはページ上で利用できないので、私はURLで画像を呼び出すために持っています。

+1

この 'colorSwitch –

+0

、bodyタグの下の内部スクリプトタグを使用してJSを追加してみてください[0] 'は何も返さない。コードが実行されるときに、クラス名がzoomWindowの要素は見つかりません。表示されて消えるものは何ですか? – Archer

+0

あなたは私達にサイトへのリンクを教えてもらえますか? – Archer

答えて

0

のようなものを試してみてください。質問を正しく理解していれば、ユーザーの選択に基づいて画像を変更したいと思う。このように簡単に行うことができます。

私は2つのラベルを付けて、それらに一意の色属性を与え、クリックするとその属性値をチェックし、それに応じて製品divの背景イメージを変更しています。どんな種類の文字列操作も必要ありません。

HTML:

<div 
    style="z-index: 999; 
    overflow: hidden; 
    margin-left: 0px; margin-top: 0px; 
    background-position: -144px 0px; 
    width: 456px; height: 343px; 
    float: left; 
    cursor: crosshair; 
    background-repeat: no-repeat; position: absolute; 
    background-image: url('https://be-goji.com/wp-content/uploads/2017/01/OSSO-ROSE.jpg'); 
    top: 0px; left: 0px;" 
    class="zoomWindow">&nbsp; 
</div> 

<div style="float:right"> 
    <label itemColor="Rose">Rose</label> <label itemColor="Coco">Coco</label> 
</div> 

JS:

// isolates the HTML from the window 
var colorSwitch = document.getElementsByClassName('zoomWindow')[0]; 


//function that brings picture to show in the window on click 
var myFunction = function(){ 
    if(this.getAttribute("itemColor") == "Rose"){ 
    colorSwitch.style.backgroundImage = "url('https://be-goji.com/wp-content/uploads/2017/01/OSSO-ROSE.jpg')"; 
    } 
    else if(this.getAttribute("itemColor") == "Coco"){ 
     colorSwitch.style.backgroundImage = "url('https://be-goji.com/wp-content/uploads/2017/01/coco_noir.jpg')"; 
    } 
}; 

// gets the element I want to put the event onto 
var chooseColorNoir = document.getElementsByTagName('label'); 
for (var i = 0; i < chooseColorNoir.length; i++) { 
    chooseColorNoir[i].addEventListener('click', myFunction, false); 
} 

Working Pen for your reference

+0

ご協力いただきありがとうございます!これで修正されます。 問題はページに統合することですが、心配する必要はありません。問題があるかどうか尋ねます。 –

-1

colorSwitch [0]は定義されていません。私もcolorSwitchは未定義であると推測しています。おそらく、javascriptコードがzoomWindow divにロードされる前に実行されるためです。あなたはずっとこれをやりたいのはなぜ

<body onload="runJavascript()"> 
関連する問題